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 )。