Настройка сонарного сканера для отдельного отчета о проверке зависимостей для проекта с несколькими модулями - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть многомодульная настройка проекта.Поскольку в моем проекте нет настройки Jenkins / Maven, я использую CLI, чтобы получить отчет о зависимостях для каждого модуля отдельно и скопировать их в корневую папку проекта, названную в соответствии с их модулем

. Например:

D: MyProject
 --module1
    --src
 --module2
    --src

--dependency-check-module1-report
    --dependency-check-report (XML)
    --dependency-check-report (HTML)
--dependency-check-module2-report
    --dependency-check-report (XML)
    --dependency-check-report (HTML)

Я явно упомянул путь мудрого отчета модуля в sonar-project.properties файле

#----- Default SonarQube server
sonar.host.url=http://localhost:9000

# Root project information
sonar.projectKey=MyProject
sonar.projectName=MyProject
sonar.projectVersion=1.0

# Some properties that will be inherited by the modules
sonar.sources=src
sonar.language=java
sonar.java.binaries=src
sonar.java.libraries=src

# List of the module identifiers
sonar.modules=module1,module2

# Properties can obviously be overriden for each module - just prefix them with the module ID
#module1.sonar.projectName=MyProject-module1
#module2.sonar.projectName=MyProject-module2

# Encoding of the source files
sonar.sourceEncoding=UTF-8

module1.sonar.dependencyCheck.reportPath=D:/MyProject/dependency-check-module1-report/dependency-check-report.xml
module1.sonar.dependencyCheck.htmlReportPath=D:/MyProject/dependency-check-module1-report/dependency-check-report.html
module2.dependencyCheck.reportPath=D:/MyProject/dependency-check-module2-report/dependency-check-report.xml
module2.dependencyCheck.htmlReportPath=D:/MyProject/dependency-check-module2-report/dependency-check-report.html

Сонар-сканер работает нормально, но пропустите, чтобы выбрать проверку зависимости, так как всегда проверяется $ {WORKSPACE} / dependency-check-report.html, который определен в панели инструментов sonarQube-> Configuraiton-> Dependency-Check

В панели инструментов я могу упомянуть файл отчета только для одного из модулей, но мне нужно, чтобы оба отчета модуля были интегрированы в сканирование SonarQubeрезультат.

Журнал:

12:45:46.752 DEBUG: Sensors : Dependency-Check -> SonarJavaXmlFileSensor -> Analyzer for "php.ini" files -> Zero Coverage Sensor -> CPD Block Indexer
12:45:46.752 INFO: Sensor Dependency-Check [dependencycheck]
12:45:46.752 INFO: Process Dependency-Check report
12:45:46.752 WARN: Dependency-Check report does not exist. SKIPPING. Please check property sonar.dependencyCheck.reportPath: ${WORKSPACE}/dependency-check-report.xml
12:45:46.752 DEBUG: Analysis aborted due to missing report file
java.io.FileNotFoundException: Dependency-Check report does not exist.
        at org.sonar.dependencycheck.parser.XmlReportFile.getInputStream(XmlReportFile.java:82)
        at org.sonar.dependencycheck.DependencyCheckSensor.parseAnalysis(DependencyCheckSensor.java:173)
        at org.sonar.dependencycheck.DependencyCheckSensor.execute(DependencyCheckSensor.java:227)
        at org.sonar.scanner.sensor.SensorWrapper.analyse(SensorWrapper.java:53)
        at org.sonar.scanner.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:88)
        at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:82)
        at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:68)
        at org.sonar.scanner.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:88)
        at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:177)
        at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
        at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121)
        at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:291)
        at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:286)
        at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:264)
        at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
        at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121)
        at org.sonar.scanner.task.ScanTask.execute(ScanTask.java:48)
        at org.sonar.scanner.task.TaskContainer.doAfterStart(TaskContainer.java:84)
        at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
        at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121)
        at org.sonar.scanner.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:121)
        at org.sonar.batch.bootstrapper.Batch.doExecuteTask(Batch.java:116)
        at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:71)
        at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
        at com.sun.proxy.$Proxy0.execute(Unknown Source)
        at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:171)
        at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:128)
        at org.sonarsource.scanner.cli.Main.execute(Main.java:111)
        at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
        at org.sonarsource.scanner.cli.Main.main(Main.java:61)

12:45:46.784 INFO: Process Dependency-Check report (done) | time=32ms
12:45:46.784 WARN: Dependency-Check report does not exist. SKIPPING. Please check property sonar.dependencyCheck.reportPath: ${WORKSPACE}/dependency-check-report.html
12:45:46.784 INFO: Sensor Dependency-Check [dependencycheck] (done) | time=32ms
12:45:46.784 INFO: Sensor SonarJavaXmlFileSensor [java]
12:45:46.784 INFO: Sensor SonarJavaXmlFileSensor [java] (done) | time=0ms

Можно ли сказать, что sonar-scanner не проверяет путь отчета о зависимостях, упомянутый в sonarQube-Dashboard, а проверяет sonar-project.properties

Кроме того, если это вообще возможно, где я могу увидеть отчет о зависимости owasp на панели инструментов?(Это MyProject -> Показатели -> OWASP-Dependency-Check?)

Прямо сейчас в Dashboard я вижу только «MyProject», и он добавляет нет.уязвимостей, запахов кода и т. д. для обоих модулей вместе.Я думал, что увижу результат сканирования по модулю отдельно.

Кстати, я использую sonarqube-6.7.5 sonar-dependency-check-plugin-1.1.1 sonar-java-plugin-5.7.0.15470 sonar-scanner-3.2.0.1227

Спасибозаранее за подсказку.

1 Ответ

0 голосов
/ 16 сентября 2018

Свойства, определенные в sonar-project.properties файле, перезаписывают значения по умолчанию, настроенные на сервере.

Я обнаружил одну проблему в следующей конфигурации:

module1.sonar.dependencyCheck.reportPath=D:/MyProject/dependency-check-module1-report/dependency-check-report.xml
module1.sonar.dependencyCheck.htmlReportPath=D:/MyProject/dependency-check-module1-report/dependency-check-report.html
module2.dependencyCheck.reportPath=D:/MyProject/dependency-check-module2-report/dependency-check-report.xml
module2.dependencyCheck.htmlReportPath=D:/MyProject/dependency-check-module2-report/dependency-check-report.html

Вы забыли добавить sonar между module2 и dependencyCheck:

module2.sonar.dependencyCheck.reportPath=D:/MyProject/dependency-check-module2-report/dependency-check-report.xml
module2.sonar.dependencyCheck.htmlReportPath=D:/MyProject/dependency-check-module2-report/dependency-check-report.html

Может быть, эта ошибка является причиной проблемы.

Я надеюсь, что эти файлы существуют на вашем сервере сборки:

D:/MyProject/dependency-check-module1-report/dependency-check-report.xml
D:/MyProject/dependency-check-module1-report/dependency-check-report.html
D:/MyProject/dependency-check-module2-report/dependency-check-report.xml
D:/MyProject/dependency-check-module2-report/dependency-check-report.html

EDIT:

Вы используете Windows, поэтому пути настроены неправильно. Заменить:

module1.sonar.dependencyCheck.reportPath=D:/MyProject/dependency-check-module1-report/dependency-check-report.xml
module1.sonar.dependencyCheck.htmlReportPath=D:/MyProject/dependency-check-module1-report/dependency-check-report.html
module2.sonar.dependencyCheck.reportPath=D:/MyProject/dependency-check-module2-report/dependency-check-report.xml
module2.sonar.dependencyCheck.htmlReportPath=D:/MyProject/dependency-check-module2-report/dependency-check-report.html

с:

module1.sonar.dependencyCheck.reportPath=D:\MyProject\dependency-check-module1-report\dependency-check-report.xml
module1.sonar.dependencyCheck.htmlReportPath=D:\MyProject\dependency-check-module1-report\dependency-check-report.html
module2.sonar.dependencyCheck.reportPath=D:\MyProject\dependency-check-module2-report\dependency-check-report.xml
module2.sonar.dependencyCheck.htmlReportPath=D:\MyProject\dependency-check-module2-report\dependency-check-report.html
...