2015-08-02 8 views
4

Я хочу запустить проверку Fortify для проекта Maven Eclipse.Укрепить интеграцию с Maven - установить

С какого места следует начать?

Я понимаю, что мне нужно обновить файл pom.xml, чтобы включить плагин Fortify, однако мне также требуется установить Fortify SCA на моем компьютере? (Я бегу MacOS X). Я пытался найти место для загрузки Fortify SCA, но не смог найти его.

Я был бы признателен, если бы кто-то мог поделиться некоторыми ссылками, чтобы указать мне в правильном направлении, чтобы завершить установку.

+0

Единственное место, где вы можете скачать Fortify - это HP Portal (https://softwaresupport.hp.com). Вот еще одно сообщение о том, как использовать плагин maven из Fortify: https://stackoverflow.com/questions/29742146/fortify-scanning-in-eclipse-over-maven-projects/29756342#29756342 – Eric

ответ

3

Я не думаю, что установка Fortify требуется, но без труда получить плагин maven sca довольно сложно. Если вы устанавливаете на другой компьютер, вы можете скопировать только плагин, но тогда у вас не было бы приложения Audit Workbench для работы с сгенерированным FPR. Как сказал @Eric, вы должны получить его через HP, и он не будет работать без лицензии.

После того, как вы получите, что установки вы добавить профили вашего pom.xml для выполнения АСС цели:

<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, и это немного меняется в зависимости от того, используете ли вы родитель, агрегатор или ничего.

+1

No * fpr * был сгенерирован в мое дело. Я должен запускать 'clean',' translate' и 'scan' как отдельные команды maven. – banterCZ

+0

Я выяснил, что добавление этих трех профилей в pom.xml не требуется. После установки плагина Fortify maven мне просто нужно было запустить 3 команды, упомянутые здесь (http://stackoverflow.com/a/29808348/782011). – pacoverflow

4

На самом деле профили не нужны, только конфигурация плагина.

<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 работу вы можете писать, в качестве предварительного шага, сценарий оболочки:

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

А затем определить фактическую «Цель и варианты», как:

install sca:scan -DskipTests 

Наличие их в виде отдельных командных строк - единственный способ получить sca-clean, перевести и отсканировать (и отправить файл отчета Fortify), выполненный в одном задании Jenkins.

Надеюсь, это сработает и для вас!

+0

Как вы пришли к выводу, что они должны быть отдельными командами? Я выполняю цели Maven 'clean sca: clean sca: translate sca: scan' в моей работе Jenkins, и это работает отлично ... – piit79

+1

Нет конкретной причины, просто как это сработало для меня, когда команда одиночной строки не выполняла работа. – Prokis