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之类的东西,它们包括给定平台的十几个文件(标题)和自定义配置,这是不实际的。我希望抑制或忽略错误,因为我知道正在测试的构建版本的文件在语法上是正确的。
谢谢!
答案 0 :(得分:1)
最近我使用 clang-tidy 对我们的一个项目进行源代码分析。该项目使用GNU编译器,我们并不想放弃它。所以我遵循的流程如下:
1)使用承担生成编译数据库,即clang-tidy使用的compile_commands.json
2)通过我们不想通过分析它们作为系统文件来分析的包含文件,即使用--isystem包含它们,使用-I包含项目特定文件。 (如果您无法更改Make文件,则可以通过简单的查找和替换来更改compile_commands.json)
希望这有帮助