簡體   English   中英

CodeQL掃描JAR個文件

[英]CodeQL Scanning JAR Files

我剛剛開始使用 CodeQL,並且已經成功掃描了 Python 個項目。 現在,我開始掃描 Java 個項目,我很難掃描預編譯的項目。

從我收集到的信息來看,CodeQL CLI 似乎包括一個用於 Java 代碼的自動構建器,並將為我構建項目。 我正在嘗試掃描已從 Maven 中央存儲庫編譯的項目。

問題:

  1. 是否可以使用 CodeQL 掃描包含在 JAR 文件中的已編譯 Java 源代碼(即字節碼、class 文件)?
  2. 如果是這樣,我如何調用這些屬性從 CLI 掃描 JAR 個文件?

感謝您的任何見解!

正如另一個答案中提到的,對於 Java,CodeQL 在編譯期間觀察結果並從中創建一個數據庫。 因此不可能從包含已編譯類的 JAR 構建數據庫。 然而,可以在項目中使用編譯類(例如以 Maven 依賴項的形式,或 JDK 用法),並且 CodeQL 將記錄這些類被使用的信息,但它無法洞察這些類的作用。 這意味着它們將無法使用數據流或污點流,除非 CodeQL 對其進行顯式建模,請參閱支持的框架列表

但是,由於您的計划是針對來自 Maven Central 的項目運行查詢,因此最容易從 lgtm.com 獲取數據庫,或者直接使用 lgtm.com 上的查詢控制台,另請參閱文檔 對於大多數項目,lgtm.com 能夠自行構建項目。

lgtm.com 歸 Semmle 所有,Semmle 最初創建了 CodeQL,並被GitHub 收購

根據我的閱讀,它似乎不適用於已編譯的類。 您將需要 src 代碼,無論是作為(Jar,然后您需要在處理之前解壓縮)還是 Github 項目存在。

通常在運行過程中你會提供構建項目的方式,例如--language=java --command='mvn clean install -DskipTests' <-- 這需要源代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM