Sonardelphi 의이 포크는 현재 매우 오래되었으며 지금은 몇 년 동안 아무 기여도가 없었습니다.
Embarcadero는 여기에서 찾은 포크를 채택 할 것을 권장합니다 : https://github.com/integrated-application-development/sonar-delphi
그들의 포크는 Sonarqube에 의해 받아 들여지고 채택되었습니다.
Sonarqube와 Delphi 소스 코드를 분석하기위한 Embarcadero의 Sonar Delphi 플러그인 공식 버전. 다른 버전에서 업데이트 및 기여를 수집하여 새로운 기능으로 전진하면 이동합니다. JAM 소프트웨어의 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에서 TestResults를 가져 오려면 [Dunit Extension] (https://github.com/mendrix/dunit-extension)을 사용하고 제공된 러너를 사용해야합니다 (테스트 클래스를 TTESTCASEEXTENSION으로 변경할 필요는 없습니다).
ExitCode := TTestRunnerUtils.RunRegisteredTests;
매개 변수가 제공되지 않으면 GUI로 테스트를 실행합니다. 매개 변수 -xml 사용하면 도구가 Sonarqube의 Junit과 호환되는 XML 출력을 만듭니다. -output 사용하면 출력 디렉토리를 지정할 수 있습니다
MyTester.exe -xml -output <outputdirectory>
이 테스트 결과를 가져 오려면 Sonar Project 속성에 다음 줄을 추가하십시오.
sonar.junit.reportsPath=TestResults
또한 플러그인이 TestFiles를 찾을 수있는 위치를 지정해야합니다. 테스트의 SourceFiles는 소스 디렉토리에 제외되는 것이 중요합니다.
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 프로젝트 속성에 다음 줄을 추가하십시오.
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 문법을 사용하여 델파이 언어를 구문 분석합니다. 문법 정의는 /src/main/antlr3/org/sonar/plugins/delphi/antlr/delphi.g 에서 찾을 수 있습니다. 이 문법을 확인하고 수정하는 쉬운 방법은 antlrworks를 사용하는 것입니다. 여기서는 새로운 파일에서 문법을 테스트하고 새로운 언어 정의를 구현할 수 있습니다.
delphi.g 문법을 성공적으로 변경하고 테스트 한 후에는 새 구문 분석 코드를 생성해야합니다 (메뉴 생성, 옵션 생성 코드). 이제 /src/main/antlr3/org/sonar/plugins/delphi/antlr/output/ to /src/main/java/org/sonar/plugins / /src/main/java/org/sonar/plugins/delphi/antlr/ and (re) 파일을 복사하십시오.
참고 : 새로운 문법 변경도 테스트하는 것이 중요합니다. 오류없이 구문 분석 할 수 있는지 확인하면 /src/main/java/org/sonar/plugins/delphi/antlr 의 기존 문법 파일 중 하나에 새로운 언어 기능을 추가 할 수 있습니다 (최신 The The Nexest Is Grammartest2020.pas ).