使用 CLI 配置 IRX 文件生成
使用配置文件来生成 IRX 文件,可在配置文件中指定单独的目标,也可包含或排除目标。此外,还可使用配置文件指定能够帮助生成完整 IRX 文件的其他信息。
配置文件用法
无论何时发出 appscan prepare (Windows™) 或 appscan.sh prepare (Linux™ 和 macOS) 命令来生成 IRX 文件,Static Analyzer Command Line Utility 都将自动检查当前目录中是否存在 appscan-config.xml 文件。如果找到该文件,则将自动使用该文件。
如果您在其他目录中有配置文件,或配置文件具有不同的文件名,则可通过在发出 appscan prepare 或 appscan.sh prepare 命令时包含 -c 选项来使用该文件。在这种情况下,在 appscan 上发出 appscan prepare -c <configuration_file>,或在 (Windows™) 上发出 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。openSourceOnly="<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) 属性及子元素的用法如下:
- 仅当您要扫描目录并强制 Command Line Utility 仅查找构建输出文件(例如,
.jar、.war和.class文件)时使用Target元素outputs-only属性。缺省情况下,将此属性设置为false。这意味着 Command Line Utility 将搜索目录以确定该目录是否为目标(例如,应用程序服务器),或者该目录是否包含构建脚本、Maven.pom文件和make文件等项。如果要将扫描目标视为简单目录,并且只查找输出文件,请在Target元素中指定outputs-only="true"。例如,如果指定
<Target outputs-only="false" path="C:\Tomcat">,则 Command Line Utility 假定目标是 Tomcat 应用程序服务器,并搜索其部署的.war文件。但是,如果指定<Target outputs-only="true" path="C:\Tomcat">,则 Command Line Utility 会将该位置视为目录,并在其中查找所有构建输出文件。 - 使用
Target元素path属性指定扫描目标或扫描目标目录的路径 (<scan_target_path>)。指定目录时,在扫描期间将包含其所有子目录。例如,如果指定
<Target outputs-only="false" path="C:\WebSphere\AppServer85\profiles\AppSrv01">,则 Command Line Utility 会在AppSrv01配置文件中查找所有已部署的.ear文件。如果指定<Target outputs-only="false" path="C:\WebSphere\AppServer85">,Command Line Utility 会在所有配置文件中查找所有已部署的.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 文件。 |
|
| directory | 如果目标是目录,则可以包含或排除任何目标、目标类型或扫描文件的路径或文件名。 注: 指定目录时需要结尾反斜杠。 |
|
| 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 Command Line Utility 随附的 Apache Tomcat V7 应用程序。
- 生成 IRX 文件时,将包含 ShoppingCart.war 文件,以及所有以 *Account.jar 结尾的文件。将排除 EAR 文件的 thirdPartyJars/ 中的全部内容,同时排除文件名中包含字符串 test 的任何文件。如果存在冲突,则
exclude模式优先。例如,如果 EAR 文件包含 testCustomerAccount.jar 文件,由于 testexclude模式优先于 *Account.jarinclude模式,因此将排除此文件。