使用 CLI 配置 IRX 檔案產生
請使用配置檔進行 IRX 檔案產生,在其中,您可以指定個別目標,或者包括或排除目標。此外,還可以使用配置檔來指定可協助產生完整 IRX 檔案的其他資訊。
配置檔用法
只要發出 appscan prepare
(Windows™) 或 appscan.sh prepare
(Linux™ 及 macOS) 指令以產生 IRX 檔案,Static Analyzer 指令行公用程式 就會自動檢查現行目錄中是否有 appscan-config.xml
檔。如果找到該檔案便會自動使用。
如果您的配置檔是在不同的目錄,或者檔案名稱不同,則可以在發出 appscan prepare
或 appscan.sh prepare
指令時包括 -c
選項,藉此使用該檔案。在此情況下,請在 (Windows™) 上發出 appscan prepare -c <configuration_file>
或在 (Linux™ 及 macOS) 上發出 appscan.sh prepare -c <configuration_file>
,其中 <configuration_file>
是配置檔的完整路徑和檔名。
配置檔範本及設定
在準備配置檔時,請使用此範本:
<Configuration attributes="true/false">
<Targets>
<Target outputs-only="true/false" path="scan_target_path">
<CustomBuildInfo build_info="info"/>
<Include>string_pattern</Include>
<Exclude>string_pattern</Exclude>
</Target>
</Targets>
</Configuration>
enableSecrets="<true or false>"
啟用掃描所有來源檔案中的密碼。預設值是false
。secretsOnly="<true or false>"
停用靜態分析並僅掃描來源檔案中的密碼。預設值是false
。sourceCodeOnly="<true or false>"
只會掃描原始檔,並忽略其他支援的檔案類型(.dll
、\.exe
)。預設值是false
。staticAnalysisOnly="<true or false>"
停用開放原始碼掃描,並且只會執行靜態分析。預設值是false
。thirdParty="<true or false>"
啟用第三方構件的掃描。預設值是false
。
使用 Targets
元素來指示在產生 IRX 檔案時要掃描的目標。目標 (Target
) 屬性及子元素的用法如下所示:
- 只有在您想要掃描目錄並強制 指令行公用程式 僅尋找建置輸出檔(例如
.jar
、.war
及.class
檔案)時,才使用Target
元素outputs-only
屬性。此屬性預設是設定為false
。這表示 指令行公用程式 會搜尋該目錄,以判定它是否為目標(例如應用程式伺服器或 Eclipse 工作區)- 或者該目錄是否包含建置 Script、Maven.pom
檔及make
檔之類的項目。如果您希望將掃描目標當成簡單目錄,並且只尋找輸出檔,請在Target
元素中指定outputs-only="true"
。例如,如果您指定
<Target outputs-only="false" path="C:\Tomcat">
,則 指令行公用程式 會假設目標是 Tomcat 應用程式伺服器,並搜尋其已部署的.war
檔案。不過,如果您指定<Target outputs-only="true" path="C:\Tomcat">
,則 指令行公用程式 會將該位置視為目錄,並找出其中所有的建置輸出檔。 - 使用
Target
元素path
屬性以指定掃描目標的路徑或掃描目標的目錄 (<scan_target_path>
)。當指定目錄時,在掃描期間會包含其所有子目錄。例如,如果您指定
<Target outputs-only="false" path="C:\WebSphere\AppServer85\profiles\AppSrv01">
,則 指令行公用程式 會尋找AppSrv01
設定檔中所有已部署的.ear
檔案。如果您指定<Target outputs-only="false" path="C:\WebSphere\AppServer85">
,則 指令行公用程式 會尋找所有設定檔中所有已部署.ear
的檔案。 - 您也可以指定這些選用的
Target
子元素:- 您可以使用
CustomBuildInfo
元素來設定屬性。使用範本的這個部分:
您可以根據目標語言來指定建置資訊。針對某些語言,可以設定多個屬性,例如,您可以設定<CustomBuildInfo build_info="info"/>
<CustomBuildInfo build_info_1="info_1" build_info_2="info_2" build_info_3="info_3"/>
,視目標語言而定。- 如果是 Java,您可以設定這些屬性:
<CustomBuildInfo additional_classpath="dependency_path" jdk_path="JDK_path" jsp_compiler="JSP_compiler_path" package_includes="namespaces" package_excludes="namespaces"/>
- 使用
additional_classpath
屬性指定更多類別路徑。在 Windows™ 上,使用分號區隔多個類別路徑。在 Linux™ 和 macOS 上,使用冒號區隔多個類別路徑。 - 使用
jdk_path
屬性指定 JDK 安裝的路徑。 - 使用
jsp_compiler
屬性指定 JSP 編譯器的路徑,例如:jsp_compiler="C:\Tomcat"
jsp_compiler="C:\Program Files (x86)\IBM\WebSphere\AppServer"
jsp_compiler="C:\Oracle"
- 使用
package_includes
屬性來覆寫現有的第三方排除,並只掃描來自給定名稱空間的類別。使用分號來區隔名稱空間清單。例如:package_includes="com.hcl.example;com.hcl.sample"
- 利用
package_excludes
屬性,將指定的名稱空間附加到現有的協力廠商排除清單中。使用分號來區隔名稱空間清單。 - 使用
<CustomBuildInfo>
標籤中的irx_minor_cache_home
屬性來設定平行處理快取位置的 Java。這個值應該指向快取所用的位置。例如:<CustomBuildInfo irx_minor_cache_home="X:/mycache"/>
- 使用
- 對於所提供 Tomcat 底下的 JSP,您可以使用這些屬性:
<CustomBuildInfo jsp_compiler_args="-ARGUMENTS"/>
- 使用
jsp_compiler_args
屬性以指定 JSP 編譯器指令行引數,設定或置換 JSP 編譯器。
- 使用
- 如果是 .NET(僅限 Windows),您可以設定這些屬性:
<CustomBuildInfo references="assembly_references" configuration="build_configuration"/>
- 使用
references
屬性新增組件參照。請以分號區隔多個參照。 - 使用
configuration
屬性併入 Visual Studio 解決方案探索的建置配置。 - 使用
package_includes
屬性來覆寫現有的第三方排除,並只掃描來自給定名稱空間的類別。使用分號來區隔名稱空間清單。例如:package_includes="com.hcl.example;com.hcl.sample"
- 利用
package_excludes
屬性,將指定的名稱空間附加到現有的協力廠商排除清單中。使用分號來區隔名稱空間清單。
- 使用
- 如果是 C/C++(僅限 Windows),您可以設定這些屬性:
<CustomBuildInfo configuration="build_configuration" include_paths="include_directories" macros="macros" compiler_opts=/>
- 使用
configuration
屬性併入建置配置。 - 使用
include_paths
屬性指定併入路徑。請以分號區隔多個併入路徑。 - 使用
macros
屬性併入巨集。請以分號區隔多個巨集。 - 使用
compiler_opts
屬性指定編譯器選項。請以分號區隔多個選項。
- 使用
- 如果是 Java,您可以設定這些屬性:
註: 這些屬性設定的值由子目標繼承。例如,若目標是 EAR 檔案,其中包含 WAR 和 JAR 子目標,則會假設 WAR 和 JAR 含有使用這些屬性對 EAR 檔案設定的相同值。 - 您可以使用
- 使用
Include
子元素,以指定要在產生 IRX 檔案時包括的檔案型樣 (<string_pattern>
)。Include
行為視目標類型而定,如目標併入與排除行為小節所概述。若要指定多個include
型樣,請在型樣本身的<Include></Include>
標記中新增每一個型樣。例如,<Include>string_pattern_1</Include> <Include>string_pattern_2</Include>
註: 如果您指定的include
與exclude
型樣發生衝突,則以exclude
型樣為優先。 - 使用
Exclude
子元素,以指定要在產生 IRX 檔案時排除的檔案型樣。Exclude
行為視目標類型而定,如目標併入與排除行為小節所概述。若要指定多個exclude
型樣,請在型樣本身的<Exclude></Exclude>
標記中新增每一個型樣。註: 如果您指定的include
與exclude
型樣發生衝突,則以exclude
型樣為優先。
目標包括及排除行為
目標類型 | 行為 | 範例 |
---|---|---|
.dll | 如果您的目標是 .dll 檔案,則併入或排除目標對掃描沒有影響,因為這些檔案不能包含目標。 | |
.jar | 如果您的目標是 .jar 檔案,則您可以排除 .jar 內的 .class 檔案。 |
*MyClass.class |
.war | 如果您的目標是 .war 檔案,則可以排除 .class、.jsp 和 JavaScript 檔案類型以及 WEB-INF/lib 中的 .jar 檔案。 註: .jar 檔案預設會視為協力廠商程式碼,並新增至 .war 檔案的類別路徑(預設會予以排除)。 |
com.ibm.*.jar |
.ear | 如果您的目標是 .ear,則可以包括或排除 .jar 及 .war 檔案。 |
|
目錄 | 如果您的目標是目錄,則可以包括或排除任何目標、目標類型或掃描檔案的路徑或檔名。 註: 指定目錄時,需要具有尾端斜線。 |
|
Web 伺服器(請參閱系統需求以瞭解支援的 Web 伺服器) | 如果您的目標是 Web 伺服器,則可以包括或排除伺服器上所部署的任何應用程式的檔名。 |
|
.sln (.NET) | 如果目標是包含 .NET 專案的 Visual Studio 解決方案檔案,您可以併入或排除解決方案中的專案所產生的任何 .NET 組件檔名。 |
|
.sln (C/C++) | 如果目標是包含未受管理的 C/C++ 專案的 Visual Studio 解決方案檔案,您可以併入或排除任何專案的檔名。 |
|
配置檔範例
<Configuration>
<Targets>
<Target path="C:\test\MyApplication.ear">
<CustomBuildInfo additional_classpath="C:\java\lib;C:\java2\lib"
jdk_path="C:\Program Files\Java\jdk1.7" jsp_compiler="C:\Tomcat"/>
<Include>ShoppingCart.war</Include>
<Include>*Account.jar</Include>
<Exclude>thirdPartyJars/</Exclude>
<Exclude>*test*</Exclude>
</Target>
</Targets>
</Configuration>
- C:\test\MyApplication.ear 是目標。
- C:\java\lib 和 C:\java2\lib 中搜尋是否有編譯所需的任何類別檔相依關係。
- C:\Program Files\Java\jdk1.7 用來尋找相依關係。
- 系統會使用 C:\Tomcat 編譯器來編譯 JSP,而不是使用 Static Analyzer 指令行公用程式 隨附的 Apache Tomcat 第 7 版應用程式。
- 產生 IRX 檔案時,會併入 ShoppingCart.war 檔案,且結尾為 *Account.jar 的所有檔案也一樣會併入。EAR 檔案的 thirdPartyJars/ 中的一切都會被排除,且其檔名中有 test 字串的任何檔案也一樣被排除。如果發生衝突,則以
exclude
型樣為優先。例如,若 EAR 檔案包含 testCustomerAccount.jar 檔案,則會排除它,因為 testexclude
型樣的優先順序高於 *Account.jarinclude
型樣。