Sonardelphiのこのフォークは現在非常に古くなっており、数年間貢献していません。
EmbarCaderoは、ここにあるフォークを採用することをお勧めします:https://github.com/integrated-application-development/sonar-delphi
彼らのフォークは、魔法のような成果であるSonarqubeによって受け入れられ、採用されています。
Sonarqubeを使用したDelphiソースコードを分析するためのEmbarcaderoのSonar Delphiプラグインの公式バージョン。他のバージョンから更新や貢献を収集し、このバージョンへの貢献を行い、新しい機能を前進させた場合に移動します。 Jam SoftwareのJoachim Marderと、これについて私たちと協力してくれたMendrixのLaurens Van Run、およびGithubのSonar-Delphiプロジェクトに貢献した他のすべての人に感謝します。
プルリクエストを受け入れ、より多くの貢献者を探しています。
プルリクエストを受け入れなくなりました。上記の代替リポジトリに貢献することをお勧めします。
提供されるSonarqubeプラグインです
.html出力これはプラグインバージョン1.0です。 Sonarqube 7.9(LTS)以上が必要です(Sonarqube 7.9.3および8.2.0でテスト)
Sonarqube Delphiプラグインは、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;
これにより、パラメーターが与えられていない場合、GUIでテストを実行します。パラメーター-xmlを使用すると、ツールはSonarqubeのJunitと互換性のあるXML出力を作成します。 -outputを使用すると、出力ディレクトリを指定できます
MyTester.exe -xml -output <outputdirectory>
これらのテスト結果をインポートするには、次の行をソナープロジェクトプロパティに追加します。
sonar.junit.reportsPath=TestResults
また、プラグインがテストファイルを見つけることができる場所を指定する必要があります。テストのソースファイルをソースディレクトリで除外することが重要です。
sonar.exclusions=MyTestFiles/*
sonar.tests=MyTestFiles
Dunitxから結果をインポートすることもできます。したがって、ファイルを追加する必要があります
DUnitX.Loggers.XML.SonarQube.pas
Dunitxプロジェクトに。次に、アプリケーションの.dprを変更し、ソースディレクトリの機能を追加します(これは、最新のDelphiユニットに対応する正しい.pasファイルを見つけるために使用されます):
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とUnittestsの両方の結果を得るには、上記のオプションを組み合わせる必要があります。例えば:
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/ディレクトリからSonarqubeプラグインディレクトリにプラグインをコピーできます。
最初にEclipse Mavenゴールを実行します:
mvn eclipse:eclipse
プロジェクトは、ファイル - >インポートし、一般的な - >既存のプロジェクトをワークスペースに選択してEclipseにインポートできます。
Intellijでpom.xmlを開くだけで、ほとんどの依存関係を単独で解決する必要があります。
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 main/antlr3/org/sonar/plugins/delphi/antlr/delphi.gにあります。この文法を確認して変更する簡単な方法は、Antlrworksを使用することです。ここでは、新しいファイルで文法をテストして、新しい言語定義を実装できます。
Delphi.Gグラマーを正常に変更およびテストした後、新しいパーサーコード(メニュー生成、オプション生成コード)を生成する必要があります。次に、ファイルをコピーしますdelphilexer.javaおよびdelphipharser.java from /src/main/antlr3/org/sonar/plugins/delphi/antlr/output/ to /src/main/java/org/sonar/plugins/delphi/antlr/ and(and(re)プラグインを構築します。
注:新しい文法の変更もテストされていることを確認することが重要です。エラーなしで解析できることを確認する必要がある場合は、 /src/main/java/org/sonar/sonar/delphi/antlrの既存の文法ファイルの1つに新しい言語機能を追加できます(最新はGrammartest2020.pas )。