Проверка зависимостей с TeamCity и SonarQube для .Net Framework и .Net Core

У меня возникла проблема с отправкой выходных данных средства проверки зависимостей от агента сборки на сервер SonarQube. Я не уверен, что это команды, которые я использую с Dependency Checker или настройкой SonarQube на стороне сервера / клиента. Я получаю результаты сканирования, отправленные в SonarQube для .cs, .js, .css и т. Д., Но результат сканирования зависимостей не отображается в виджете средства проверки зависимостей. Однако, если я проверю рабочую папку для конкретной сборки, есть три файла, которые были созданы с помощью средства проверки зависимостей owasp, которые не были подобраны.

Что я сделал для подготовки перед сканированием:

  • Загрузил OWASP dependency-check-cli с https://jeremylong.github.io/DependencyCheck/dependency-check-cli/index.html
  • Извлечен OWASP dependency-check-cli в каталог и добавлен путь в качестве значения среды на сервере агента сборки.
  • Установил плагин проверки зависимостей на SonarQube через отмеченное место
  • Установлен сонарсканер на сервере агента сборки через учетную запись службы агента сборки.
  • Removed the ${Workspace}/ value from the report fields in the dependency check plugin in SonarQube
    • The value is now just dependency-check-report.html/json/xml (pending on the field).

Команда, которую я использовал для установки dotnet-sonarscanner через .Net Core:

dotnet tool install --global dotnet-sonarscanner

Команда OWASP dependency-check-cli (выполняется из корня checkoutDir в агенте сборки):

dependency-check.bat --project "%system.teamcity.projectName%" --scan . -f ALL --log D:\DependencyLogs\verbose.log

Чтобы функция RetireJs работала, мне пришлось отлаживать журнал и напрямую загружать файл json, который нельзя было получить напрямую. Я думаю, мне нужно добавить переопределения для прокси для https, используя параметры java (/ d :)

Команда запуска сонарного сканера:

dotnet sonarscanner begin /k:%ProjectKey% /n:"%ProjectName%" /d:sonar.login=%SonarQube.UserToken% /d:sonar.host.url=%SonarQube.Host.Url%"

Если я f.ex добавлю параметр /d:sonar.dependencyCheck.xmlReportPath=%system.teamcity.checkoutDir%/dependency-check-report.xml, он будет разрешен в checkoutdir с добавленным / src / за зависимостью-check -report.xml

Команда завершения сонарного сканера:

dotnet sonarscanner /d:sonar.login=%SonarQube.UserToken% end

Если я добавлю

%system.teamcity.build.workingDir%/dependency-check-report.html

в поле html, xml или json в свойствах плагина в sonarqube:

[23:19:08]  [Step 1/1] INFO: Dependency-Check JSON report does not exists. Please check property sonar.dependencyCheck.jsonReportPath:D:\TeamCityBuildAgent\work\a7450333ae6fcf0c\%system.teamcity.build.workingDir%\dependency-check-report.json
[23:19:08]  [Step 1/1] INFO: JSON-Analysis skipped/aborted due to missing report file
[23:19:08]  [Step 1/1] INFO: Using XML-Reportparser
[23:19:08]  [Step 1/1] INFO: Dependency-Check XML report does not exists. Please check property sonar.dependencyCheck.xmlReportPath:D:\TeamCityBuildAgent\work\a7450333ae6fcf0c\%system.teamcity.build.workingDir%\dependency-check-report.xml
[23:19:08]  [Step 1/1] INFO: XML-Analysis skipped/aborted due to missing report file
[23:19:08]  [Step 1/1] INFO: Dependency-Check HTML report does not exists. Please check property sonar.dependencyCheck.htmlReportPath:D:\TeamCityBuildAgent\work\a7450333ae6fcf0c\%system.teamcity.build.workingDir%\dependency-check-report.html
[23:19:08]  [Step 1/1] INFO: HTML-Dependency-Check report does not exist.

если я удалю рабочий каталог, в sonarqube он будет выглядеть так:

dependency-check-report.html

Результат выглядит так:

[23:26:38]  [Step 1/1] INFO: Sensor Dependency-Check [dependencycheck]
[23:26:38]  [Step 1/1] INFO: Process Dependency-Check report
[23:26:38]  [Step 1/1] INFO: Using JSON-Reportparser
[23:26:39]  [Step 1/1] WARN: JSON-Analysis aborted
[23:26:39]  [Step 1/1] INFO: Using XML-Reportparser
[23:26:39]  [Step 1/1] INFO: We doesn't found any Project configuration file e.g. pom.xml, gradle.build, build.gradle.kts, package-lock.json and can not link dependencies
[23:26:39]  [Step 1/1] INFO: Linking 662 dependencies to project
[23:26:39]  [Step 1/1] INFO: Upload Dependency-Check HTML-Report
[23:26:39]  [Step 1/1] INFO: Process Dependency-Check report (done) | time=959ms
[23:26:39]  [Step 1/1] INFO: Sensor Dependency-Check [dependencycheck] (done) | time=960ms

Так что это должно было сработать. HTML-код Dependency-Check заполнен и загружен, но когда я смотрю на зависимости, указанные в SonarQube, представление остается пустым. Что мне не хватает ..?

Выход есть:

введите здесь описание изображения


person Harald S. Hanssen    schedule 06.03.2020    source источник


Ответы (1)


В настоящее время официальный плагин для SonarQube (версия 2.0.2) содержит ошибку, которая не отображает результат в формате html.

Если вы хотите, чтобы он работал, вам необходимо получить последний снимок из этой ветки https://github.com/dependency-check/dependency-check-sonar-plugin/tree/rewrite_javascript

person Harald S. Hanssen    schedule 13.03.2020