生成静态分析 IRX 文件时发生错误或警告

症状

生成 IRX 文件时,可能会收到错误或警告,或 IRX 文件生成可能会失败。IRX 文件生成失败时,会在生成的文件的名称中附加 _failed(例如,my_irx_file_failed.irx)。发生这种情况时,有多种选项可用于对 IRX 文件生成进行故障诊断。

解决方法

  • 使用配置文件对 IRX 文件生成进行故障诊断

    如果在没有使用配置文件的情况下生成 IRX 文件,且文件生成未完成(或者如果已完成但有错误),则 Static Analyzer Command Line Utility 将生成临时配置文件,以供您在后续扫描中使用。此文件类似于配置文件模板,其中包含一个 Targets 元素以及有关目标的已知信息。但是,此文件还将包含 <TargetSettings> 元素,可通过添加允许 Command Line Utility 生成完整 IRX 文件的信息来进行修改。此文件将命名为 appscan-config.xml,并保存到当前目录中。这意味着此文件将自动用于下一次扫描。

    例如,假定生成 IRX 文件所针对的目标中包含找不到的外部依赖关系,则您可能会收到类似以下内容的消息:

    C:\myTargetDirectory>appscan prepare
                  An IRX file was created, but it may be incomplete.
    C:\myTargetDirectory\myTarget.jar requires the following packages:
          org.apache.jasper.*
    An appscan-config.xml file was created in: C:\myTargetDirectory\appscan-config.xml
    Please update the file and rerun the command.

    生成的 appscan-config.xml 文件如下所示:

    <Configuration>
      <Targets>
        <Target outputs-only="true" path="C:\myTargetDirectory"/>
      </Targets>
      <Settings/>
      <TargetSettings>
        <Target path="C:\myTargetDirectory\myTarget.jar"/>
          <!--Please add the path of the following dependencies to the attribute "additional_classpath" below, separated by semi-colon.
    			  org.apache.jasper.*-->
          <CustomBuildInfo additional_classpath=""/>
        </Target>
      </TargetSettings>
    </Configuration> 

    要解决此问题,请更新 <CustomBuildInfo additional_classpath=""/> 以在类路径上包含 org.apache.jasper.* 类,保存 appscan-config.xml 文件,然后重新运行 appscan prepare (Windows)appscan.sh prepare Linux 和 macOS 命令。指定 JAR 文件的路径时,支持标准 Java 类路径语法(例如,支持通配符)。

    如果在已使用配置文件的情况下遇到类似问题,您会收到指示这些问题的消息。使用此消息来更新现有配置文件,然后重新运行命令。

    配置文件在 使用 CLI 配置 IRX 文件生成 中进行了描述。

  • 以调试方式生成 IRX 文件

    如果要从 CLI 生成 IRX 文件,可发出带有调试选项的 appscan prepare (Windows)appscan.sh prepare Linux 和 macOS 命令。这会生成更多日志文件。

  • IRX 文件生成关联的日志文件

    要查看错误或警告,可以查阅同时生成的日志文件。日志文件将保存到 .zip 存档文件中。缺省情况下,会将此文件保存到用于保存 IRX 的相同位置,或者可通过使用 appscan prepare (Windows)appscan.sh prepare Linux 和 macOS 命令的 -l 选项来指定其他位置。.zip 文件的名称基于生成的 IRX 文件的名称。

  • JSP 编译问题

    如果存在 JSP 编译问题,请检查 <file_name>_logs.zip 中的 compile.log 是否存在编译错误。