加强与 Maven 的集成 - 安装

Posted

技术标签:

【中文标题】加强与 Maven 的集成 - 安装【英文标题】:Fortify integration with Maven - install 【发布时间】:2015-10-24 15:29:27 【问题描述】:

我想对 Maven Eclipse 项目运行 Fortify 扫描。

我应该从哪里开始?

我知道我需要更新我的pom.xml 文件以包含 Fortify 插件,但是我是否还需要在我的计算机上安装 Fortify SCA? (我正在运行 MacOS X)。我一直在寻找下载 Fortify SCA 的地方,但一直找不到。

如果有人可以分享一些链接,为我指明正确的方向以完成设置,我将不胜感激。

【问题讨论】:

您可以下载 Fortify 的唯一地方是 HP 门户 (softwaresupport.hp.com)。这是关于如何使用 Fortify 的 maven 插件的另一篇文章:***.com/questions/29742146/… 【参考方案1】:

其实不需要配置文件,只需要插件配置。

<build>
    <plugins> 
        <plugin>
            <groupId>com.fortify.ps.maven.plugin</groupId>
            <artifactId>sca-maven-plugin</artifactId>
            <version>4.30</version>
            <configuration>
                <findbugs>true</findbugs>
                <htmlReport>true</htmlReport>
                <maxHeap>800M</maxHeap>
                <source>myJavaVersion</source>
                <buildId>myBuildId</buildId>
                <verbose>true</verbose>
                <skipTests>true</skipTests>
                <toplevelArtifactId>myTopLevelId</toplevelArtifactId>
            </configuration>
        </plugin>
    </plugins>
</build>

通过使用单个 Jenkins 作业,您可以在前一步编写一个 shell 脚本:

mvn clean sca:clean -DskipTests
mvn sca:translate -DskipTests

然后将实际的“目标和选项”定义为:

install sca:scan -DskipTests

将它们作为单独的命令行是在一个 Jenkins 作业中完成 sca-clean、翻译和扫描(并将报告文件发送到 Fortify)的唯一方法。

希望这对你也有用!

【讨论】:

您是如何得出它们需要单独的命令的结论的?我正在 Jenkins 工作中执行 Maven 目标 clean sca:clean sca:translate sca:scan,它工作得很好...... 没有具体原因,只是它对我的工作方式,当单行命令没有完成工作时。【参考方案2】:

我认为不需要安装 Fortify,但是没有它很难获得 maven sca 插件。如果您安装在另一台机器上,您可以只复制该插件,但您不会让 Audit Workbench 应用程序与生成的 FPR 一起工作。正如@Eric 所说,您必须通过 HP 获得它,并且没有许可证将无法使用。

安装完成后,将配置文件添加到 pom.xml 以执行 sca 目标:

<profile>
  <id>sca-clean</id>
  <activation>
    <activeByDefault>false</activeByDefault>
  </activation>
  <build>
    <plugins>
      <plugin>
        <groupId>com.fortify.ps.maven.plugin</groupId>
        <artifactId>sca-maven-plugin</artifactId>
        <version>4.30</version>
        <configuration>
          <jre64>true</jre64>
          <buildId>myproject</buildId>
          <toplevelArtifactId>myproject.parent</toplevelArtifactId>
          <skipTests>true</skipTests>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>clean</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</profile>


<profile>
  <id>sca-translate</id>
  <activation>
    <activeByDefault>false</activeByDefault>
  </activation>
  <build>
    <plugins>
      <plugin>
        <groupId>com.fortify.ps.maven.plugin</groupId>
        <artifactId>sca-maven-plugin</artifactId>
        <version>4.30</version>
        <configuration>
          <jre64>true</jre64>
          <jreStack>8M</jreStack>
          <maxHeap>12000M</maxHeap>
          <verbose>true</verbose>
          <buildId>myproject</buildId>
          <toplevelArtifactId>myproject.parent</toplevelArtifactId>
          <skipTests>true</skipTests>
          <failOnSCAError>true</failOnSCAError>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>translate</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</profile>


<profile>
  <id>sca-scan</id>
  <activation>
    <activeByDefault>false</activeByDefault>
  </activation>
  <build>
    <plugins>
      <plugin>
        <groupId>com.fortify.ps.maven.plugin</groupId>
        <artifactId>sca-maven-plugin</artifactId>
        <version>4.30</version>
        <configuration>
          <jre64>true</jre64>
          <jreStack>8M</jreStack>
          <maxHeap>12000M</maxHeap>
          <verbose>true</verbose>
          <buildId>myproject</buildId>
          <toplevelArtifactId>myproject.parent</toplevelArtifactId>
          <failOnSCAError>true</failOnSCAError>
          <upload>false</upload>
          <projectName>My Project Main Development</projectName>
          <projectVersion>$project.version</projectVersion>
        </configuration>
      </plugin>
    </plugins>
  </build>
</profile>

从命令行运行扫描:

mvn -Dmaven.test.skip=true -Dfortify.sca.buildId=myproject -Dfortify.sca.toplevel.artifactId=myproject.parent com.fortify.ps.maven.plugin:sca-maven-plugin:clean

显然,您必须弄清楚 buildId 和 artifactId 的命名方式,这取决于您使用的是 parent、aggregator 还是什么都没有。

【讨论】:

没有 fpr 在我的情况下生成。我必须将 cleantranslatescan 作为单独的 maven 命令运行。 我发现不需要将这 3 个配置文件添加到 pom.xml 中。安装 Fortify maven 插件后,我只需要运行here 中提到的 3 个命令。

以上是关于加强与 Maven 的集成 - 安装的主要内容,如果未能解决你的问题,请参考以下文章

Maven的安装以及与eclipse集成

持续集成篇-Maven私有库和本地库的安装与配置Sonatype Nexus + Maven

Dubbo分布式系统架构,持续集成篇 Maven私有库和本地库的安装与配置 Sonatype Nexus + Maven

linux学习:持续集成篇--Maven私有库和本地库的安装与配置-03

Maven下载安装与配置

Sonar6.0应用之四:与Jenkins集成分析(Scanner+Maven)