解析由GCC打印的C / C ++编译错误

问题描述 投票:0回答:1

给定c / cpp / .h文件,我想编译它们并找到编译错误(和警告)。

从编译错误,我想生成一个结构或表,如,

{
  level: (ERROR/WARNING)
  fileName: 'hello.cc'
  lineNumber: 24
  char: 5 (if available, or can be skipped)
  message: 'The description of the error'
}
  1. 在Java中,有一个Java Compiler API。是否有类似的C ++ API?
  2. 如果唯一的选择是解析gcc或g ++的输出,如何解析错误消息,以便我可以生成如上定义的结构数组?

我查看了一些错误消息。对于来自gcc的许多错误消息,我看一下,所有错误行都以'filename: In function main'或'filename:lineNumber:column'开头。所有多行错误消息都是由一些空格缩进的

是否可以安全地假设,以非空格字符开头的行是错误行的开头?

注意:我在过去10年里从未编写过c ++程序,我正在为Codiva.io online compiler构建C / C ++支持(目前只支持java)。我觉得,不是给出一个控制台输出,在每一行解析和显示将是一个很好的用户体验,并为学生节省了大量的时间。解析来自clang编译器的错误消息会更容易吗?

c++ gcc g++
1个回答
1
投票

随着即将推出的gcc 9.0,有一个输出JSON的选项:-fdiagnostics-format=json

https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-format

© www.soinside.com 2019 - 2024. All rights reserved.