Fortify SCA 排除选项不排除其中的所有子目录和文件

Fortify SCA exclude option doesn't exclude all subdirectories and files inside

我们在 .net 中有一个复杂的 Visual Studio 解决方案,其中有许多用于单元测试、集成测试和测试工具的项目。我们希望在自动部署时 运行 Fortify SCA,但将所有测试项目排除在扫描之外。下面的命令不排除子目录中的所有文件。子目录/文件夹可以有很多级别。为文件夹结构的每一层编写排除选项非常困难。有什么想法吗?

文件夹结构(排除):

C:\src\Code\Test\IntegrationTests\IntregationTests1\..many files
C:\src\Code\Test\IntegrationTests\IntregationTests2\..many files
C:\src\Code\SomeProject1.Tests\..folders\..files
C:\src\Code\SomeProject2.Tests\..folders\..files
C:\src\Code\TestHarness\Project1\..folders\..files
C:\src\Code\TestHarness\Project2\..folders\..files

排除测试项目的命令

.\sourceanalyzer -b "APP" -exclude "C:\src\Code\*Test*\*" devenv $SolutionPath /REBUILD
  

您可以尝试 src\Code\SomeProject2.Tests***

为了解决这个问题,我编写了一个 PowerShell 脚本,并通过参数传递了源代码的根路径。在脚本中,我列出了要排除在数组中的文件夹。 SCA 扫描的结果已上传到 Fortify 仪表板。

param (
    [string]$SourceRoot = "\"
 )
$SolutionPath = "$($SourceRoot)\Code\Test.Web.sln"
$VersionID = "10101"
$UpToken = "98752711-c3e1-4d03-8dea-51f150638994"
$Excludes = @(
    "$($SourceRoot)\code\unit.tests\**\*;",
    "$($SourceRoot)\code\prototypes\**\*;",
    "$($SourceRoot)\code\tools\**\*;"   
)
.\sourceanalyzer -b "APP" -clean
.\sourceanalyzer -b "APP" -exclude "$($Excludes -join'')" msbuild /t:rebuild $SolutionPath
./scancentral.bat -url "http://10.10.10.10:8181/scancentral-ctrl" start -upload -versionid $VersionID -uptoken $UpToken -b "APP" -scan
.\sourceanalyzer -b "APP" -clean