Fortify SCA 使用 Maven 插件排除多个 directories/files

Fortify SCA exclude multiple directories/files with maven plugin

对于看似重复的问题,我们深表歉意,但其他 Fortify 解决方案似乎不适合我的情况。我正在通过 maven sca 插件scans/uploads

<plugin>
   <groupId>com.fortify.ps.maven.plugin</groupId>
   <artifactId>sca-maven-plugin</artifactId>
   <version>4.20</version><!--$NO-MVN-MAN-VER$-->
       <configuration>
          <projectName>sample</projectName>
          <projectVersion>${appVersion}</projectVersion>
          <exclude>**/*.(LOCAL|INT).*</exclude>
       </configuration>
</plugin>

有效

这从扫描中排除了所有 LOCAL 和 INT(集成测试)属性 文件。此外,我还想将存档的 xsds 排除在扫描之外:

<exclude>**/(*.(LOCAL|INT).*)|(xsd/archive/*)</exclude>

但这不起作用。事实上,甚至没有找到原始的工作模式。有任何想法吗?

如果您查看 SCA 用户指南的 Appendix F: Maven Integration 部分,在 Excluding Files from the Scan 标题下,它向您展示了如何排除文件。它告诉您为属性使用单独的文件并设置 com.fortify.sca.exclude。相反,我会尝试只使用分号来分隔您的两个排除模式。

我将分享我的解决方案,尽管有一些工作需要您能够访问 HP fortify 安装:

我厌倦了为此烦恼一整天所以我做了唯一明智的事情并重新编写了一部分fortify maven插件!我喜欢分隔符 ; 所以我更改了 mavin-plugin 文件夹下的 TranslateMojo.java 文件如下,然后重新部署 fortify 插件:

旧行:

addOptionValuePair("-exclude", exclude);

新行:

if(exclude != null && exclude.length() > 0){
   String[] excludeList = exclude.split(";");
   for(int i = 0; i < excludeList.length; i++){
      addOptionValuePair("-exclude", excludeList[i].trim());
   }
}

现在我的项目 .pom 有这个 sca-maven-plugin 定义:

<plugin>
  <groupId>com.fortify.ps.maven.plugin</groupId>
  <artifactId>sca-maven-plugin</artifactId>
  <version>4.20</version>
     <configuration>
      <projectName>sample</projectName>
      <projectVersion>${appVersion}</projectVersion>
      <exclude>**/*.(LOCAL|INT).*;**/xsd/archive/*</exclude>
   </configuration>
</plugin>

Maven 生成并用作翻译步骤一部分的 sca-translate-war.txt 文件现在对提供的每个模式都有一个 -exclude:

"-exclude" "**/*.(LOCAL|INT).*" "-exclude" "**/xsd/archive/*"

这对我有用,希望能为别人节省几个小时的时间。

对于无法使用多个排除项并考虑修补插件的任何人,请首先检查您是否使用了正确的分隔符。在 Windows 上必须是分号,在 Linux 上必须是冒号。

实际上,您可以这样修改源代码,而不是调整源代码:

<plugin>
  <groupId>com.fortify.ps.maven.plugin</groupId>
  <artifactId>sca-maven-plugin</artifactId>
  <version>4.20</version>
     <configuration>
      <projectName>sample</projectName>
      <projectVersion>${appVersion}</projectVersion>
      <exclude>**/*.(LOCAL|INT).*" -exclude "**/xsd/archive/*</exclude>
   </configuration>
</plugin>

请注意 exclude 标签中的 " -exclude "! ;)