对 python 项目进行强化扫描

Anc*_*wal 5 python fortify

热衷于为 python 文件生成 Fortify for file。

类似的问题是Fortify,如何通过命令开始分析,但它列出了java的步骤。

要为 python 项目生成报告,必须使用 --python-path。我尝试执行以下步骤,但没有成功。

第 1 步:清理、构建

sourceanalyzer -64 -Xms1024M -Xmx10000M -b -verbose -Dcom.fortify.sca.ProjectRoot=/local/proj/9999/ -Dcom.fortify.WorkingDirectory=/local/proj/9999/working -logfile  /local/proj/working/9999/working/sca.log  -clean
Run Code Online (Sandbox Code Playgroud)

第2步:扫描:这一步应该生成fpr文件

sourceanalyzer -b 9999 -verbose -Xms1024M -Xmx10000M -Dcom.fortify.sca.ProjectRoot=/local/proj/9999/ -Dcom.fortify.WorkingDirectory=/local/proj/9999/working  -logfile /local/proj/9999/sca.log -python-path /path/to/python -f projec_999.fpr /local/proj/**/*.py
Run Code Online (Sandbox Code Playgroud)

这没有生成任何 fpr 文件。第二步给出警告:

[warning]: The -f option has no effect without the -scan option
[warning]: You may need to add some arguments to the -python-path argument to SCA.
Run Code Online (Sandbox Code Playgroud)

我不确定我是否使用了正确的命令。

  1. 如何确保目录和子目录中的所有python文件都被扫描?
  2. 有没有添加多个Python路径的选项?

SBu*_*ris 4

您所做的第一步仅执行Clean,而不是构建步骤。

要执行 Python 的翻译步骤,您需要指定任何 Python 引用 ( ) 的目录-python-path以及要翻译的文件。

我也不确定您正在使用 ProjectRoot 和workingDirectory 做什么,您知道它们用于存储源分析器的临时数据/中间文件,而不是源代码的位置,对吗?

就像是

sourceanalyzer -b <buildId> -python-path <directories> <files to scan>'
Run Code Online (Sandbox Code Playgroud)
  • <buildId>可用于对不同的项目进行分组,当您执行ProjectRootand时,您在某种程度上是自己做的WorkingDirectory (我不确定您是否需要它们,不记得了,我不再有权对其进行测试)
  • <directories>- 您可以在此处列出通常位于 PythonPath 环境变量中的目录(您实际上可以在此处调用它并省去很多麻烦)。对于 Windows,这是一个以逗号分隔的列表;对于 Linux,这是一个以冒号分隔的列表
  • <files to scan>您可以在此处指定要翻译/扫描的文件。您可以指定单个文件或使用通配符(***/*[递归])

示例命令如下所示:

sourceanalyzer -b MyApp -python-path %PYTHONPATH% ./MyApp/**/*
Run Code Online (Sandbox Code Playgroud)

可以使用您输入的其他选项,它看起来像这样:

sourceanalyzer -b MyApp -Xms1024M -Xmx10G -logfile  /local/proj/working/9999/working/sca.log -python-path %PYTHONPATH% ./MyApp/**/*
Run Code Online (Sandbox Code Playgroud)

在此步骤中,您将检查我们从您的程序中翻译了哪些文件:

sourceanalyzer -b MyApp -show-files
Run Code Online (Sandbox Code Playgroud)

然后你将执行扫描命令

sourceanalyzer -b MyApp -logfile  /local/proj/working/9999/working/sca.log -scan -f project.fpr
Run Code Online (Sandbox Code Playgroud)