我有一个项目的部分 c 源代码,因此我无法构建。有谁知道是否可以在该项目上运行 codeql?
通常,要创建数据库,codeql cli 需要指定构建项目的命令,我无法绕过它,即使我会说能够构建项目看起来并不重要。
不过我可能是错的,欢迎任何见解。
CodeQL 需要知道如何处理您要分析的每个编译单元,以便获得诸如包含路径、编译器命令行中的宏、C/C++ 方言和语言版本以及正确的数据模型等内容。因此,没有直接的方法可以导入您无法构建的项目。准确解释任意部分 C/C++ 源代码是不可能的。
根据您的具体情况,您可以通过各种方式解决问题。例如,您可以编写一个 bash 脚本来调用gcc
或clang
处理您关心的所有源文件,并使用您对应该传递的选项的最佳猜测,并|| true
在每个命令之后使用或类似的方式抑制错误退出代码。如果您随后将此脚本作为 CodeQL 的“构建命令”提供,它将跟随您的引导并像您的编译器调用那样解释代码。即使您遇到编译错误,您仍然会获得可以使用的(部分)CodeQL 数据库。