Fortify SCA исключает несколько каталогов/файлов с помощью плагина maven

Извините за, казалось бы, повторяющийся вопрос, но другие решения 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>

но это не работает. На самом деле не найден даже оригинальный рабочий образец. Любые идеи?


person Dakota Brown    schedule 16.09.2015    source источник
comment
Это больше проблема регулярного выражения, чем проблема Maven, возможно, вам повезет, если вы зададите конкретный вопрос об этом регулярном выражении.   -  person Tunaki    schedule 16.09.2015
comment
Я полагаю, что тег maven не поможет - я удалю тег maven. Проблема заключается в том, как fortify оценивает значение флага -exclude. Обычное регулярное выражение unix, похоже, работает неправильно.   -  person Dakota Brown    schedule 16.09.2015


Ответы (4)


На самом деле вместо того, чтобы подправлять исходный код, вы можете взломать его таким образом:

<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 " внутри тега исключения! ;)

person Chris    schedule 29.06.2017

Если вы посмотрите раздел Appendix F: Maven Integration Руководства пользователя SCA под заголовком Excluding Files from the Scan, там показано, как исключать файлы. Он говорит вам использовать отдельный файл для свойств и установить com.fortify.sca.exclude. Вместо этого я бы попытался просто использовать точку с запятой, чтобы разделить два шаблона исключения.

person James Nix    schedule 16.09.2015
comment
Да, я видел точку с запятой и пытался это сделать, но, похоже, это не сработало. Использование <exclude> в плагине maven должно установить 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. - person Dakota Brown; 16.09.2015
comment
Я также хотел бы отметить, что руководство неверно относительно com.fortify.sca.exclude. Когда вы указываете его в командной строке, он должен быть -Dfortify.sca.exclude. Точка с запятой все еще не работала, пока изменение не было объяснено в моем предложенном решении. - person Dakota Brown; 17.09.2015

Я поделюсь своим решением, хотя и небольшой работой, требующей, чтобы у вас был доступ к установке HP fortify:

Мне надоело возиться с этим целый день, поэтому я сделал единственную разумную вещь и переписал часть плагина fortify maven! Мне понравился разделитель ;, поэтому я изменил файл TranslateMojo.java в папке mavin-plugin следующим образом, а затем повторно развернул плагин 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>

Файл sca-translate-war.txt, который Maven генерирует и использует как часть шага перевода, теперь имеет -exclude для каждого предоставленного шаблона:

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

Это сработало для меня и, надеюсь, сэкономит кому-то несколько часов борьбы.

person Dakota Brown    schedule 17.09.2015

Для тех, у кого возникли проблемы с работой нескольких исключений и кто думает об исправлении плагина, сначала убедитесь, что вы используете правильный разделитель. Это должна быть точка с запятой в Windows или двоеточие в Linux.

person David Anderson    schedule 01.02.2017
comment
в Fortify 16.10+ они изменили способ предоставления исключенных файлов в файле pom. Теперь это теги ‹exclude› с вложенными тегами ‹exclude› внутри. Гораздо лучше - без разделителей - person Dakota Brown; 02.02.2017