【问题标题】:Fortify SCA exclude multiple directories/files with maven pluginFortify SCA 使用 Maven 插件排除多个目录/文件
【发布时间】:2015-12-13 12:07:51
【问题描述】:

抱歉,这个看似重复的问题,但其他 Fortify 解决方案似乎不适合我的情况。我正在通过 maven sca 插件进行扫描/上传

<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(集成测试)属性文件排除在扫描范围之外。此外,我还想排除已归档的 xsd 被扫描:

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

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

【问题讨论】:

  • 这更像是一个正则表达式问题而不是一个 Maven 问题,也许你会更幸运地问一个关于这个正则表达式的特定问题。
  • 我想标记它 maven 不会有帮助——我会删除 maven 标记。问题在于 fortify 如何评估 -exclude 标志值。常规的 unix 正则表达式似乎无法正常工作。

标签: fortify


【解决方案1】:

实际上,您可以通过这种方式破解它,而不是调整源代码:

<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 "! ;)

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 是的,我看到了分号并尝试了,但它似乎不起作用。在maven插件中使用&lt;exclude&gt;应该设置com.fortify.sca.exclude:[warning]: No files were excluded as the file patterns: [**/*.(LOCAL|INT).*;**/xsd/archive/*] specified for -exclude option did not match any files.
    • 我还想指出该指南关于 com.fortify.sca.exclude 的错误。当您在命令行上提供它时,它需要是-Dfortify.sca.exclude。在我提供的解决方案中解释的更改之前,分号仍然不起作用
    【解决方案3】:

    我将分享我的解决方案,尽管需要您访问 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/*"

    这对我有用,并有望为某人节省几个小时的时间。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 在 Fortify 16.10+ 中,他们改变了您在 pom.xml 中提供排除文件的方式。现在是 标签,里面有嵌套的 标签。好多了——没有分隔符
      猜你喜欢
      • 2014-08-02
      • 2015-03-03
      • 2019-02-19
      • 2010-12-11
      • 2013-10-27
      • 2015-03-13
      • 1970-01-01
      • 2013-10-04
      • 2013-10-03
      相关资源
      最近更新 更多