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

时间:2014-08-19 01:46:41

标签: java fortify

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

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

<antcall target="compile">
    <param name="build.compiler" value="com.fortify.dev.ant.SCACompiler"/>
</antcall>

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

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

2 个答案:

答案 0 :(得分:5)

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

sourceanalyzer -b test ant

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

%USERPROFILE%\AppData\Local\Fortify\sca<version>\build\test

或在其他平台上:

~/.fortify/sca<version>/build/test

这将包含NST的规范化路径,如在翻译期间执行的那样。然后,如果需要,可以使用这些扫描多次,但应该清理&#34;如果扫描一个单独的新(或更新)代码库。

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

答案 1 :(得分:2)

Lavamunky对于工作目录的默认路径是正确的。您可以在以下位置更改此信息:

1. FortifyInstallRoot\Core\config\fortify.properties: com.fortify.WorkingDirectory
2. FortifyInstallRoot\Core\config\fortify-sca.properties: com.fortify.sca.ProjectRoot

请注意,您需要使用/作为路径分隔符,而不是配置文件中的\。在这些路径指定的文件夹内,模式为:sca \ build \。

您还可以在运行时指定这些:

sourceanalyzer -b MyBuild -Dcom.fortify.WorkingDirectory=C:\Fortify\Work -Dcom.fortify.sca.ProjectRoot=C:\Fortify\Work

工作文件的路径是:

C:\Fortify\Work\sca<version>\build\MyBuild\