TL:DR
当原始源文件因缺少头文件而存在 DEPENDENCY 错误并导致编译问题(例如未声明的标识符和未知类型)时,是否可以生成 clang 调试信息(CFG、PDG)?这些文件在语法上是正确的。是否有一个标志可以将所有未声明的标识符设置为 INT 以进行调试?
<小时/>我正在使用Clang来分析源代码包。通常,我修改 makefile,以便 clang 使用下面的命令生成调试信息
clang -emit-llvm -g -S -ferror-limit=0 -I somefile some_c_file
但是,这种方法非常注重 makefile,如果开发人员在给定的构建版本中不支持 Clang,我必须弄清楚如何生成调试信息。
这不利于自动化。对于诸如 OpenSSL 之类的东西,它们包含数十个文件( header )和给定平台的自定义配置,这是不切实际的。如果可能的话,我想抑制或忽略错误,因为我知道正在测试的构建版本的文件在语法上是正确的。
谢谢!
最佳答案
最近我使用clang-tidy对我们的一个项目进行源代码分析。该项目使用 GNU 编译器,我们不想放弃它。所以我遵循的过程如下:
1) 使用bear生成编译数据库,即clang-tidy使用的compile_commands.json
2) 通过将它们作为系统文件包含来绕过我们不想分析的包含文件,即使用 --isystem 来包含它们,并使用 -I 来包含项目特定文件。 (如果您无法更改 Make 文件,您可以通过简单的查找和替换来更改compile_commands.json)
希望这有帮助
关于c - 绕过C错误生成clang调试信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41254948/