gpt4 book ai didi

java - HP Fortify 将中间文件放在哪里?

转载 作者:行者123 更新时间:2023-11-29 06:33:53 26 4
gpt4 key购买 nike

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

它说可以使用以下 Ant 代码进行翻译:

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

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

我在我们的 Java 代码上运行了 Fortify,它生成了漏洞报告。但是我在任何地方都看不到中间文件。我对常规 javac 编译器生成的 Java 类文件和 SCACompiler 生成的 Java 类文件进行了比较,发现它们完全相同。中间文件是否存储在其他地方,或者 Fortify 会在执行扫描后自动删除它们?

最佳答案

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

sourceanalyzer -b test ant

然后会存放在项目工作目录中。在 Windows 中,通常:

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

或在其他平台上:

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

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

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

关于java - HP Fortify 将中间文件放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25374505/

26 4 0