HP Fortify在哪里放置中间文件?

pac*_*low 1 java fortify

根据HP Fortify文档,静态代码分析器首先将源代码转换为中间格式,然后扫描已翻译的代码并生成漏洞报告.

它说翻译可以使用以下Ant代码完成:

<antcall target="compile">
    <param name="build.compiler" value="com.fortify.dev.ant.SCACompiler"/>
</antcall>
Run Code Online (Sandbox Code Playgroud)

这将调用您的"编译"目标,但强制它使用SCAC编译器而不是常规的javac编译器.

我已经在我们的Java代码上运行Fortify,它会生成漏洞报告.但是我没有在任何地方看到中间文件.我在常规javac编译器生成的Java类文件和SCACompiler生成的Java类文件之间运行了差异,它们完全相同.中间文件是否存储在其他地方,或Fortify在执行扫描后是否会自动删除它们?

小智 5

中间文件不是类或目标文件.它们是NST(规范化语法树)文件,HP Fortify使用的专有格式(这在"使用静态分析进行安全编程"一书中讨论过.当使用构建ID进行翻译时,例如:

sourceanalyzer -b test ant
Run Code Online (Sandbox Code Playgroud)

然后它将存储在项目工作目录中.在Windows中,通常:

%USERPROFILE%\AppData\Local\Fortify\sca<version>\build\test
Run Code Online (Sandbox Code Playgroud)

或在其他平台上:

~/.fortify/sca<version>/build/test
Run Code Online (Sandbox Code Playgroud)

然后,这将包含NST的规范化路径,如在翻译期间执行的那样.如果需要,这些可以用于多次扫描,但是如果扫描单独的新(或更新的)代码库则应该"清理".

对于ant集成,我认为它取决于哪个版本的Ant,以及你的翻译方式,但这种方式我认为它只是调用sourceanalyzer.jar文件(包含com.fortify.dev.ant.SCACompiler类)以挂钩到JVM并遵循构建创建扫描所需的NST文件.我不相信它实际上是javac的单独版本,尽管<SCA installation directory>/jre/它可能会使用一个单独的版本.