Эта вилка Sonardelphi в настоящее время очень устарела и не имеет никаких вкладов уже несколько лет.
Embarcadero Рекомендует принять вилку, найденную здесь: https://github.com/integrated-application-development/sonar-delphi
Их вилка была принята и принята Sonarqube, который является неотъемлемым достижением.
Официальная версия Embarcadero плагина Sonar Delphi для анализа исходного кода Delphi с Sonarqube. Работа по сбору обновлений и вкладов от других версий в этот и перейти, если они вперед с новыми функциями. Благодаря Йоахиму Мардеру из Jam Software и Laurens Van Run из Mendrix за работу с нами над этим, и все остальные, кто внес свой вклад в проекты Sonar-Delphi на GitHub.
Мы принимаем запросы на привлечение и ищем больше участников.
Мы больше не принимаем запросы на привлечение. Мы рекомендуем вам внести свой вклад в вышеуказанный альтернативный репозиторий.
Плагин Sonarqube, который предоставляет
.html вывод для тестового покрытияЭто плагин-версия 1.0. Sonarqube 7.9 (LTS) или выше необходимы (протестировано с Sonarqube 7.9.3 и 8.2.0)
Sonarqube Delphi Plugin использует интегрированную систему отслеживания проблем Github для записи ошибок и запросов функций. Если вы хотите поднять проблему, пожалуйста, следуйте рекомендациям ниже:
CodeCoverage может быть сделан с помощью инструмента DelphicoDecoverage. Использовать
CodeCoverage.exe -xml -xmllines
Для создания выхода XML, который может быть импортирован через этот плагин. Поэтому вы должны редактировать свойства проекта сонара:
sonar.delphi.codecoverage.tool=dcc
sonar.delphi.codecoverage.report=Test/CoverageResults/CodeCoverage_Summary.xml
Чтобы импортировать тесты из DUNIT, вы должны использовать [DUNIT EXTENSION] (https://github.com/mendrix/dunit-extension) и использовать поставляемый бегун (нет необходимости изменять ваши тестовые классы на ttestcaseextension).
ExitCode := TTestRunnerUtils.RunRegisteredTests;
Это запустит ваши тесты с помощью графического интерфейса, если параметры не указаны. С параметром -xml инструмент создаст выходной сигнал XML, который совместим с Junit для Sonarqube. С -output ваш может указать выходной каталог
MyTester.exe -xml -output <outputdirectory>
Чтобы импортировать эти результаты теста, добавьте следующую строку в свойства проекта сонара:
sonar.junit.reportsPath=TestResults
Вы также должны указать, где плагин может найти ваши файлы испытаний. Важно, чтобы исходные файлы из ваших тестов были исключены в вашем каталоге источников.
sonar.exclusions=MyTestFiles/*
sonar.tests=MyTestFiles
Также возможно импортировать результаты от DUNITX. Поэтому вы должны добавить файл
DUnitX.Loggers.XML.SonarQube.pas
к вашему проекту DUNITX. Затем измените .DPR вашего приложения и добавьте функциональность для каталога источников (это используется для поиска правильного файла .PAS, соответствующего единице Delphi Unittest):
TOptionsRegistry.RegisterOption<String>('sources', 's', 'Specify a file with on each line a directory where the PAS-files of the unittests can be found.', procedure (AString: String) begin
LSourcesDir := AString;
end);
sqLogger := TDUnitXXMLSonarQubeFileLogger.Create(LSourcesDir, TDUnitX.Options.XMLOutputFile);
runner.AddLogger(sqLogger);
Чтобы импортировать полученный файл XML, добавьте следующую строку в свойства проекта сонара:
sonar.testExecutionReportPaths=Test/TEST-dunitx-sqresults.xml
Чтобы иметь результаты как кодовых, так и результатов, для Sonarqube вы должны объединить вышеупомянутые варианты. Например:
CodeCoverage.exe -e MyTester.exe -m MyTester.map -a ^^-xml^^ ^^-output TestResults^^ -ife -spf sourcedirs.txt -uf unitstotest.txt -od CoverageResults -html -xml -xmllines
Чтобы создать плагин, вам нужна Java 8 и Maven 3.1 (или больше).
mvn compile
mvn test
mvn package
Теперь вы можете скопировать плагин из каталога /target/ Directory в каталог плагинов Sonarqube.
Сначала запустите цель затмения:
mvn eclipse:eclipse
Затем проект может быть импортирован в Eclipse, используя File -> Import, а затем выбрать общие -> существующие проекты в рабочее пространство.
Просто откройте pom.xml в IntelliJ, должен сама решить большинство зависимости.
Sonarqube имеет отличную документацию о разработке плагина. Чтобы отладить этот плагин с сканером Sonarqube, чтобы просто установить следующую переменную среды (в Windows):
SET SONAR_SCANNER_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000"
Теперь вы прикрепляете свой отладчик Eclipse (или другой) к порту 8000, чтобы начать отладку.
Плагин использует грамматику ANTLR3 для анализа языка Delphi. Определение грамматики можно найти в /src/main/antlr3/org/sonar/plugins/delphi/antlr/delphi.g . Простой способ проверить и изменить эту грамматику - это использование AntlrWorks. Здесь вы можете проверить свою грамматику на новых файлах и реализовать новые языковые определения.
После успешного изменения и тестирования грамматики Delphi.g вы должны генерировать новый код анализатора (меню генерировать, опция генерировать код). Теперь скопируйте файлы delphilexer.java и delphiparser.java из /src/main/antlr3/org/sonar/plugins/delphi/antlr/output/ to /src/main/java/org/sonar/plugins/delphi/antlr/ and (re) построить плагин.
Примечание. Важно убедиться, что ваши новые изменения грамматики также протестированы. Если вам нужно только убедиться, что они могут быть проанализированы без ошибок, вы можете добавить свои новые языковые функции в один из существующих грамматических файлов в /src/main/java/org/sonar/plugins/delphi/antlr (самая новая - Grammartest2020.pas ).