【发布时间】:2017-04-07 02:35:18
【问题描述】:
给定 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'
}
- 在 Java 中,有一个 Java 编译器 API。是否有类似的 C++ API?
- 如果唯一的选择是解析 gcc 或 g++ 的输出,如何解析错误信息,以便生成上述结构的数组?
我查看了一些错误消息。对于来自 gcc 的许多错误消息,我查看了所有错误行以 'filename: In function main' 或 'filename:lineNumber:column' 开头
并且所有多行错误消息都由一些空格缩进
是否可以假设,以非空白字符开头的行是错误行的开头?
注意:过去 10 年我从未编写过 c++ 程序,我正在为 Codiva.io online compiler 构建 C/C++ 支持(目前仅支持 java)。我觉得,与其提供控制台输出,不如在每一行解析和显示将是一种良好的用户体验,并为学生节省大量时间。 解析来自 clang 编译器的错误消息会更容易吗?
【问题讨论】:
-
您可以使用 liblang 对已解析的 c++ 代码进行自定义处理。
-
没有打印编译器错误的标准。它们可能因每个编译器供应商而异。
-
问题“如何解析?”对于
SO来说可能太宽泛了。 -
使用模板,简单的结构是不够的。您通常有一个实例化堆栈,它具有可变长度。
-
@MSalters 我不明白你的评论。