我刚刚开始使用CodeQL,并且已经成功地扫描了Python项目。现在,我开始扫描Java项目,并且很难扫描预编译的项目。
从我收集到的信息来看,Java似乎包含了一个用于CodeQL代码的自动构建器,并将为我构建这些项目。我正在尝试扫描已经从Maven中央存储库编译的项目。
问题:
谢谢你的洞察力!
发布于 2021-12-14 18:39:12
据我所读,它似乎不适用于编译后的类。您将需要src代码,无论它是作为一个(Jar,然后您需要在处理之前解压)存在,还是作为一个Github项目存在。
通常在运行过程中,您会提供构建项目的方法,比如--language=java --command='mvn clean install -DskipTests' <--这需要源代码。
发布于 2022-03-05 16:49:32
正如在另一个答案中提到的,对于Java,CodeQL在编译期间观察结果并从它创建一个数据库。因此,不可能从包含已编译类的JAR构建数据库。但是,可以在项目中使用编译过的类(例如,以Maven依赖关系或JDK使用的形式),CodeQL将记录这些类所使用的信息,但它无法深入了解这些类的功能。这意味着,除非CodeQL显式地对其建模,否则它们将无法获得数据流或污染流,请参阅支持的框架列表。
但是,由于您的计划是针对来自Maven Central的项目运行查询,所以很可能最容易使用从lgtm.com获取数据库,或者直接在lgtm.com上使用查询控制台,参见文档。对于大多数项目,lgtm.com能够自己构建项目。
lgtm.com是由Semmle拥有的,该公司最初创建了CodeQL,后来成为由GitHub获得。
https://stackoverflow.com/questions/70353748
复制相似问题