Diese Gabel von Sonardelphi ist jetzt sehr veraltet und hat seit einigen Jahren keine Beiträge mehr.
Embarcadero empfiehlt, dass Sie die hier gefundene Gabel übernehmen: https://github.com/integrated-application-development/sonar-delphi
Ihre Gabel wurde von Sonarqube akzeptiert und adoptiert, was eine maginifikante Leistung ist.
Embarcaderos offizielle Version des Sonar Delphi Plugin zur Analyse von Delphi -Quellcode mit Sonarqube. Arbeiten Sie daran, Updates und Beiträge von anderen Versionen in diesen zu sammeln und sich mit neuen Funktionen zu bewegen. Vielen Dank an Joachim Marder von Jam Software und Laurens Van Run von Mendrix für die Zusammenarbeit mit uns und alle anderen, die zu den Sonar-Delphi-Projekten auf Github beigetragen haben.
Wir akzeptieren Pull -Anfragen und suchen nach weiteren Mitwirkenden.
Wir akzeptieren keine Zuganfragen mehr. Wir empfehlen Ihnen, zum obigen alternativen Repository beizutragen.
Ist ein Sonarqube -Plugin, das bietet
.html Ausgang für TestcoverageDies ist Plugin-Version 1.0. Sonarqube 7.9 (LTS) oder höher ist erforderlich (getestet mit Sonarqube 7.9.3 und 8.2.0)
Das Sonarqube Delphi Plugin verwendet Githubs integriertes Problemverfolgungssystem, um Fehler und Funktionsanforderungen aufzuzeichnen. Wenn Sie ein Problem ansprechen möchten, befolgen Sie bitte die folgenden Empfehlungen:
CodeCoverage kann über das delphicodeCoverage -Tool durchgeführt werden. Verwenden
CodeCoverage.exe -xml -xmllines
So erstellen Sie eine XML -Ausgabe, die über dieses Plugin importiert werden kann. Daher müssen Sie Ihre Sonar -Projekteigenschaften bearbeiten:
sonar.delphi.codecoverage.tool=dcc
sonar.delphi.codecoverage.report=Test/CoverageResults/CodeCoverage_Summary.xml
Um die TestResults aus Dunit zu importieren, müssen Sie die [Dunit-Erweiterung] (https://github.com/mendrix/dunit-utsion) verwenden und den angegebenen Läufer verwenden (es ist nicht erforderlich, Ihre Testklassen in testcaseeextesion zu ändern).
ExitCode := TTestRunnerUtils.RunRegisteredTests;
Dadurch werden Ihre Tests mit GUI ausgeführt, wenn keine Parameter angegeben sind. Mit dem Parameter -xml erstellt das Tool eine XML -Ausgabe, die mit JUNIT für Sonarqube kompatibel ist. Mit -output können Sie das Ausgabeverzeichnis angeben
MyTester.exe -xml -output <outputdirectory>
Um diese Testergebnisse zu importieren, fügen Sie Ihren Sonar -Projekteigenschaften die folgende Zeile hinzu:
sonar.junit.reportsPath=TestResults
Sie müssen auch angeben, wo das Plugin Ihre Testdateien finden kann. Es ist wichtig, dass die Source -Datei aus Ihren Tests in Ihrem Quellenverzeichnis ausgeschlossen sind.
sonar.exclusions=MyTestFiles/*
sonar.tests=MyTestFiles
Es ist auch möglich, Ergebnisse aus Dunitx zu importieren. Daher müssen Sie die Datei hinzufügen
DUnitX.Loggers.XML.SonarQube.pas
zu Ihrem Dunitx -Projekt. Ändern Sie dann den .dpr Ihrer Anwendung und fügen Sie Funktionen für ein Quellenverzeichnis hinzu (mit dieser werden die richtigen .pas -Datei ermittelt, die der Delphi -Einheit des Unittest entspricht):
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);
Um die resultierende XML -Datei zu importieren, fügen Sie Ihre Sonar -Projekteigenschaften die folgende Zeile hinzu:
sonar.testExecutionReportPaths=Test/TEST-dunitx-sqresults.xml
Um sowohl CodeCoverage- als auch Unittest -Ergebnisse für Sonarqube zu erzielen, müssen Sie oben Optionen kombinieren. Zum Beispiel:
CodeCoverage.exe -e MyTester.exe -m MyTester.map -a ^^-xml^^ ^^-output TestResults^^ -ife -spf sourcedirs.txt -uf unitstotest.txt -od CoverageResults -html -xml -xmllines
Um ein Plugin zu bauen, benötigen Sie Java 8 und Maven 3.1 (oder mehr).
mvn compile
mvn test
mvn package
Jetzt können Sie das Plugin aus dem /target/ Verzeichnis in das Sonarqube -Plugin -Verzeichnis kopieren.
Führen Sie zuerst das Eclipse Maven -Ziel: Ziel:
mvn eclipse:eclipse
Das Projekt kann dann mithilfe von Datei -> importieren und anschließend allgemeine -> vorhandene Projekte in den Arbeitsbereich importieren und dann ausgewählt werden.
Öffnen Sie einfach die pom.xml in Intellij sollten die meisten Abhängigkeiten selbst lösen.
Sonarqube hat eine großartige Dokumentation über die Entwicklung eines Plugins. Um dieses Plugin mit dem Sonarqube -Scanner zu debuggen, stellen Sie einfach die folgende Umgebungsvariable (unter Windows) fest:
SET SONAR_SCANNER_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000"
Jetzt fügen Sie Ihren Eclipse -Debugger (oder einen anderen) Debugger an Port 8000 an, um das Debugging zu starten.
Das Plugin verwendet eine Antlr3 -Grammatik, um die Delphi -Sprache zu analysieren. Die Grammatikdefinition finden Sie in /src/main/antlr3/org/sonar/plugins/delphi/antlr/delphi.g . Eine einfache Möglichkeit, diese Grammatik zu überprüfen und zu ändern, ist die Verwendung von Antlrworks. Hier können Sie Ihre Grammatik auf neuen Dateien testen und neue Sprachdefinitionen implementieren.
Nachdem Sie die Delphi.g -Grammatik erfolgreich geändert und getestet haben, müssen Sie den neuen Parser -Code generieren (Menü generieren, Option generieren Code). Kopieren Sie nun die Dateien delphilexer.java und delphiparser.java aus /src/main/antlr3/org/sonar/plugins/delphi/antlr/output/ to /src/main/java/org/sonar/plugins/delphi/antlr/ und (re) Erstellen Sie das Plugin.
Hinweis: Es ist wichtig sicherzustellen, dass auch Ihre neuen Grammatikänderungen getestet werden. Wenn Sie nur sicherstellen müssen, dass sie ohne Fehler analysiert werden können, können Sie Ihre neuen Sprachfunktionen zu einer der vorhandenen Grammatikdateien in /src/main/java/org/sonar/plugins/delphi/antlr hinzufügen (das neueste ist grammartest2020.pas ).