Sonardelphi的叉子現在已經過時了,幾年來沒有任何貢獻。
Embarcadero建議您採用此處找到的叉子:https://github.com/integrated-application-development/sonar-delphi
他們的叉子已被Sonarqube接受和採用,這是一項艱鉅的成就。
Embarcadero的Sonar Delphi插件的官方版本,用於使用Sonarqube分析Delphi源代碼。努力將其他版本的更新和貢獻收集到該版本中,並具有新功能。感謝Jam Software的Joachim Marder和Mendrix的Laurens Van Run與我們合作,以及其他為Github上的Sonar-Delphi項目做出貢獻的所有人。
我們正在接受拉動請求,並尋找更多的貢獻者。
我們不再接受拉的請求。我們建議您為上述替代存儲庫做出貢獻。
是Sonarqube插件,提供
.html輸出用於測試覆蓋這是插件Version 1.0。需要Sonarqube 7.9(LTS)或更高(用Sonarqube 7.9.3和8.2.0測試)
Sonarqube Delphi插件使用GitHub的集成問題跟踪系統來記錄錯誤和功能請求。如果您想提出問題,請遵循以下建議:
可以通過Delphicodecoverage工具完成編解碼。使用
CodeCoverage.exe -xml -xmllines
要創建可以通過此插件導入的XML輸出。因此,您必須編輯您的聲納項目屬性:
sonar.delphi.codecoverage.tool=dcc
sonar.delphi.codecoverage.report=Test/CoverageResults/CodeCoverage_Summary.xml
要從Dunit導入測試結果,您必須使用[Dunit擴展](https://github.com/mendrix/dunit-extension)並使用提供的跑步者(不需要將測試類更改為ttestCaseexeension)。
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並為源目錄添加功能(這用於查找與Unittest的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的編碼範圍和Unitests結果,您必須將上述選項結合在一起。例如:
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"
現在,您將日食(或其他)調試器附加到端口8000以開始調試。
該插件使用Antlr3語法來解析Delphi語言。語法定義可以在/src/main/antlr3/org/sonar/plugins/delphi/antlr/delphi.g中找到。檢查和修改此語法的一種簡單方法是使用Antlrworks。在這裡,您可以在新文件上測試語法並實現新的語言定義。
成功更改和測試delphi.g語法後,您必須生成新的解析器代碼(菜單生成,選項生成代碼)。現在,從/src/main/antlr3/org/sonar/plugins/delphi/antlr/output/ to /src/src/main/java/org/org/org/org/org/org/plugins / /src/main/java/org/sonar/plugins/delphi/antlr/ utpects delphilexer.java和delphipharser.java。
注意:確保還測試您的新語法更改很重要。如果您只需要確保可以在沒有錯誤的情況下解析它們,則可以在/src/main/java/org/org/org/sonar/plugins/delphi/antlr中添加新的語言功能(最新是Grammartest2020.pas )。