根据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/它可能会使用一个单独的版本.
| 归档时间: |
|
| 查看次数: |
8202 次 |
| 最近记录: |