7

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

我应该从哪里开始?

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

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

4

2 回答 2

6

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

<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)的唯一方法。

希望这对你也有效!

于 2016-08-26T10:03:43.890 回答
5

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

安装完成后,将配置文件添加到 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 还是什么都不用而有所不同。

于 2015-08-07T01:24:04.860 回答