Fortify命令行使用说明

20

有人使用命令行来运行Fortify吗? 我正在尝试将Fortify运行纳入到我的CI构建中,但我不知道该怎么做。


1
我认为我已经掌握了使用sourcecodeanalyzer -h命令行帮助的起点。 - alice7
6个回答

22

由于我无法添加评论,只能将此作为答案提供。我们的公司已经将扫描过程集成到了我们的 TFS 构建环境中,并且它运行得相当不错。

我们使用一系列“调用进程”构建活动来实现这一点。整个安全扫描序列都包装在一个条件中,该条件作为构建定义的参数公开。这使我们能够根据需要启用或禁用扫描。我们还公开了一些其他内容,例如 Fortify 项目、Fortify 项目版本以及上传 FPR 文件的另一个条件。

其要点如下:

清理

sourceanalyzer -b "Build ID" -clean

构建

sourceanalyzer -b "Build ID" devenv BuildID.sln /Rebuild Debug /out "C:\SSCLogs\SSCBuild.log"

扫描

sourceanalyzer -b "Build ID" -scan -format fpr -f BuildID.fpr

上传至 SSC

fortifyclient.bat -url SSCServerUrl -authtoken XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX uploadFPR -file BuildID.fpr -project "MyProject" -version "MyProject v1.0.0"

如果您需要完整的介绍和/或一些屏幕截图,我很乐意为您提供。


6
一个典型扫描的命令看起来应该像这样。
1. 使用以下命令生成代码: sourceanalyzer -b <build ID> <sourcecode> 2. 使用以下命令扫描构建: sourceanalyzer -b <build ID> -scan -f <test>.fpr 3. (如果您正在使用360服务器)使用以下命令将结果上传到Fortify服务器:
fortifyclient uploadFPR -f <test>.fpr -project <projectname> -version <versionname> -urlhttps://fortify.com/f360 -user <username> -password <password> /// <authtoken> 然而,我需要关于构建标签的帮助。当我们调用SCA时,我们可以为其分配一个构建标签。但是我不确定要提供哪些选项给命令。 sourceanalyzer -b testid codebase -build-label <option> 如果有人知道格式,请告诉我。

当您使用-build-label时,必须提供标签名称,因此在您的示例中:Sourceanalyzer -b testid codebase -build-label MyLabel接下来,登录Fortify软件安全中心(SSC)服务器,双击您的项目版本,单击Artifacts,单击任何分析结果,您应该可以看到有关结果的详细信息。在这些详细信息中,您将看到“构建标签”。 - Steve L.

4
非常好的答案,我想补充一下,在扫描时可以添加日志记录,非常有帮助。 带日志记录的扫描

sourceanalyzer -b "构建ID" -scan -format fpr -f BuildID.fpr -debug -verbose -logfile "C:\logfile.txt"


看起来日志文件中没有包含错误消息(来自stderr),这使得日志文件没有用处。 - sify

4
Fortify拥有一个静态代码分析工具,即sourceanalyzer。这个工具基于命令行,因此应该可以集成到CI系统中。
如上所述,您可以使用帮助选项或查看文档/用户指南(名称为:“HP Fortify Static Code Analyzer User Guide”),其中涵盖了许多语言和选项。
您可能需要考虑的一点是在CI情况下执行此类扫描的速度和资源利用率。您可能需要考虑在夜间或非高峰时段运行此操作。文档指出,该工具使用相当数量的内存。
您还可能需要想出如何处理sourceanalyzer工具生成的输出fpr文件。例如,您可以将其作为Team City中的构件并手动将其上传到Fortify服务器或与Fortify工作台产品一起使用。我认为您也可以做得更高级,并自动将其上传到Fortify服务器。

2

如果您在帮助文本中没有看到适当的构建命令,请告诉我们。99%的真实世界调用都在那里。

根据您尝试构建的源代码类型,有几十种不同的命令行开关和技术可供使用。

我建议您首先获取SCA用户指南。它是一个PDF文档,您可以从提供Fortify安装程序的人那里获得。


1
在我们公司,我们创建了一个Docker镜像来管理CI过程中的Fortify命令。基本上,我们开发了一个Python脚本来帮助我们集中扫描,然后在GitlabCI的作业中调用这个Docker镜像。
正如大家所解释的那样,sourceanalyzer是执行扫描的工具,我们使用cloudscan工具连接SCC并下载扫描结果以及检查分析的状态。
我们还使用:
- fortifyclient上传*.fpr文件 - FPRUtility合并*.fpr文件 - ReportGenerator生成最终结果的PDF报告。
目前我们使用的是Fortify 19.10。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接