Java 應用程式的平行處理

Java 分析現在使用平行分析技術,可以大幅加快 IRX 檔案的產生速度。這個修訂過的分析方法也會將轉換的類別檔快取至用戶端系統上的分析格式,分析儲存的副本,而不是在每次執行分析時重建。

平行處理會將程式碼分割成較小、較容易掃描的片段,以便進行分析。接著可以同時掃描這些較小片段的程式碼。這樣不僅佔用較少的記憶體和 CPU 空間,而且可以更快取得結果。

註: 平行處理是預設的行為。使用本主題中說明的內容,進一步自訂掃描或是關閉平行處理。

一般平行處理內容

若要在執行 appscan prepare 的用戶端中設定內容,請在內容的前面附加 -D
註: 用於平行處理的指令行選項適用於 CLI、Maven 以及 Gradle 外掛程式。
內容 說明
USE_SLICER

true|false

預設值:true
設定為 true 時,會啟用平行處理。
IRX_MINOR_CACHE_HOME $user.home/.appscan/irx_cache 指定檔案快取的位置。Windows 對映和 UNC 磁碟機或 Linux 裝載可以在這裡使用。
DISABLE_CACHE True

預設值:未設定。

防止使用快取。這會強制在每一個類別檔上重新執行 IR 產生程序,即使有快取項目亦然。

範例(X)

在平行處理啟用的情況下執行,而且檔案系統快取儲存在 $user.home/.appscan/irx_cache 內:
  • CLI
    $ appscan.sh prepare 
  • Gradle
    gradle appscan-prepare
  • Maven
    mvn com.hcl.security:appscan-maven-plugin:prepare
在平行處理啟用的情況下執行,並避免使用快取:
  • CLI
    $ appscan.sh prepare -DDISABLE_CACHE=true
  • Gradle
    gradle appscan-prepare -DDISABLE_CACHE=true
  • Maven
    mvn com.hcl.security:appscan-maven-plugin:prepare -DDISABLE_CACHE=true
設定檔案快取以使用 irx_cache 目錄中的對映磁碟機 s:
  • CLI
    > appscan.bat prepare -DIRX_MINOR_CACHE_HOME=s:\\irx_cache
  • Gradle
    gradle appscan-prepare -DIRX_MINOR_CACHE_HOME=s:\\irx_cache
  • Maven
    mvn com.hcl.security:appscan-maven-plugin:prepare -DIRX_MINOR_CACHE_HOME=s:\\irx_cache
在平行處理停用的情況下執行:
  • CLI
    $ appscan.sh prepare -DUSE_SLICER=fals
  • Gradle
    gradle appscan-prepare -DUSE_SLICER=fals
  • Maven
    mvn com.hcl.security:appscan-maven-plugin:prepare -DUSE_SLICER=fals

日誌

下列日誌會在平行處理過程中產生:
  • scan.manifest :這個檔案會在 IRX 檔案產生過程中產生,並且列出探索到的所有項目。它提供語言和構件(針對每個語言進行掃描)的清單。預設會排除第三方構件。
  • scan.mainfest.json:包含 JSON 格式與 scan.manifest file 相同的資訊,以易於剖析。
  • StaticAnalyzer-Errors.slice.log 提供當 IRX 檔案未順利產生時,可能會在片段中發生的錯誤。它列出片段號碼和該片段的對應錯誤訊息。如果這個檔案是空白的,則片段中沒有與 IRX 檔案產生相關的錯誤訊息。

  • stage.stats.json:概述要針對 Java 分析的套件、暫置的 zip 格式檔案(earjarwarrar),以及要擷取這些較大 zip 格式檔案所耗費的記憶體覆蓋區。
  • slice.prepare.stats.json:包含每一個類別檔及其相關聯的儲存區,以及是否從快取中擷取它。如果未從快取擷取,則為產生片段 IPVA 檔所耗費的時間。

儲存區

每個儲存區在片段目錄底下具有包含號碼的資料夾,作為資料夾名稱。在 slices/<language>/<bucket_number>/logs 目錄中每個片段的日誌目錄底下,有一個 scan.manifest 檔案,它會列出存在於該儲存區中的構件和語言。

另外,slice.prepare.stats.json 檔還包含每個要分析的類別檔的儲存區關聯資訊。

結果

新的程式片段機制會將部分發現項目的簽章變更為與之前稍有不同。這可能會導致所產生的發現項目類似於已分類的發現項目。只有在第一次對已有來自先前掃描機制的發現項目的應用程式執行程式片段分析時,才會發生此情況。它也可能需要將某些發現項目視為新的項目,且需要如之前一般分類。