Sonardelphi ทางแยกนี้ล้าสมัยมากและยังไม่ได้มีส่วนร่วมใด ๆ มาสองสามปีแล้ว
Embarcadero แนะนำให้คุณใช้ส้อมที่พบที่นี่: https://github.com/integrated-application-development/sonar-delphi
ส้อมของพวกเขาได้รับการยอมรับและนำมาใช้โดย Sonarqube ซึ่งเป็นความสำเร็จที่สำคัญยิ่ง
ปลั๊กอิน Sonar Delphi เวอร์ชันอย่างเป็นทางการของ Embarcadero สำหรับการวิเคราะห์ซอร์สโค้ด Delphi ด้วย Sonarqube การทำงานเพื่อรวบรวมการอัปเดตและการมีส่วนร่วมจากเวอร์ชันอื่น ๆ ในรุ่นนี้และย้ายไปข้างหน้าด้วยคุณสมบัติใหม่ ต้องขอบคุณ Joachim Marder of Jam Software และ Laurens Van Run แห่ง Mendrix สำหรับการทำงานกับเราในเรื่องนี้และทุกคนที่มีส่วนร่วมในโครงการ Sonar-Delphi ใน GitHub
เรากำลังยอมรับคำขอดึงและมองหาผู้มีส่วนร่วมเพิ่มเติม
เราไม่ยอมรับคำขอดึงอีกต่อไป เราขอแนะนำให้คุณมีส่วนร่วมในพื้นที่เก็บข้อมูลทางเลือกข้างต้น
เป็นปลั๊กอิน Sonarqube ที่มีให้
.html output สำหรับ testCoverageนี่คือปลั๊กอินรุ่น 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) และใช้นักวิ่งที่ให้มา (ไม่จำเป็นต้องเปลี่ยนคลาสทดสอบของคุณ
ExitCode := TTestRunnerUtils.RunRegisteredTests;
สิ่งนี้จะเรียกใช้การทดสอบของคุณด้วย GUI หากไม่มีพารามิเตอร์ ด้วยพารามิเตอร์ -xml เครื่องมือจะสร้างเอาต์พุต XML ที่เข้ากันได้กับ Junit สำหรับ Sonarqube ด้วย -output ของคุณสามารถระบุไดเร็กทอรีเอาต์พุต
MyTester.exe -xml -output <outputdirectory>
ในการนำเข้าผลการทดสอบเหล่านี้เพิ่มบรรทัดต่อไปนี้ในคุณสมบัติโครงการ Sonar ของคุณ:
sonar.junit.reportsPath=TestResults
คุณต้องระบุว่าปลั๊กอินสามารถค้นหา testfiles ของคุณได้ที่ไหน เป็นสิ่งสำคัญที่ SourceFiles จากการทดสอบของคุณจะถูกยกเว้นในไดเรกทอรีแหล่งที่มาของคุณ
sonar.exclusions=MyTestFiles/*
sonar.tests=MyTestFiles
นอกจากนี้ยังเป็นไปได้ที่จะนำเข้าผลลัพธ์จาก Dunitx ดังนั้นคุณต้องเพิ่มไฟล์
DUnitX.Loggers.XML.SonarQube.pas
ไปยังโครงการ Dunitx ของคุณ จากนั้นเปลี่ยน. dpr ของแอปพลิเคชันของคุณและเพิ่มฟังก์ชันการทำงานสำหรับไดเรกทอรีแหล่งที่มา (ใช้เพื่อค้นหาไฟล์. pas ที่ถูกต้องที่สอดคล้องกับหน่วย Delphi ของ Unittest):
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
หากต้องการมีทั้ง Codecoverage และ UNITTESTS ผลลัพธ์สำหรับ SonarQube คุณต้องรวมตัวเลือกข้างต้น ตัวอย่างเช่น:
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 โดยใช้ไฟล์ -> นำเข้าจากนั้นเลือกทั่วไป -> โครงการที่มีอยู่ในเวิร์กสเปซ
เพียงเปิด pom.xml ใน Intellij ควรแก้ปัญหาการพึ่งพาส่วนใหญ่ด้วยตัวเอง
Sonarqube มีเอกสารที่ยอดเยี่ยมเกี่ยวกับการพัฒนาปลั๊กอิน ในการดีบักปลั๊กอินนี้ด้วยเครื่องสแกน Sonarqube คุณเพียงแค่ตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้ (บน Windows):
SET SONAR_SCANNER_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000"
ตอนนี้คุณแนบ debugger eclipse (หรืออื่น ๆ ) ของคุณเข้ากับพอร์ต 8000 เพื่อเริ่มการดีบัก
ปลั๊กอินใช้ไวยากรณ์ AntlR3 เพื่อแยกวิเคราะห์ภาษา Delphi คำจำกัดความไวยากรณ์สามารถพบได้ใน /src/main/antlr3/org/sonar/plugins/delphi/antlr/delphi.g วิธีง่ายๆในการตรวจสอบและแก้ไขไวยากรณ์นี้คือการใช้ Antlrworks ที่นี่คุณสามารถทดสอบไวยากรณ์ของคุณในไฟล์ใหม่และใช้คำจำกัดความภาษาใหม่
หลังจากเปลี่ยนและทดสอบไวยากรณ์ delphi.g สำเร็จคุณต้องสร้างรหัสตัวแยกวิเคราะห์ใหม่ (สร้างเมนูตัวเลือกสร้างรหัส) ตอนนี้คัดลอกไฟล์ delphilexer.java และ delphiparser.java จาก /src/main/antlr3/org/sonar/plugins/delphi/antlr/output/ to /src/main/java/org/sonar/plugins/delphi/antlr/
หมายเหตุ: เป็นสิ่งสำคัญที่จะต้องตรวจสอบให้แน่ใจว่าการเปลี่ยนแปลงไวยากรณ์ใหม่ของคุณได้รับการทดสอบเช่นกัน หากคุณต้องตรวจสอบให้แน่ใจว่าสามารถแยกวิเคราะห์ได้โดยไม่มีข้อผิดพลาดคุณสามารถเพิ่มคุณสมบัติภาษาใหม่ของคุณลงในไฟล์ไวยากรณ์ที่มีอยู่ใน /SRC/Main/Java/org/Sonar/Plugins/Delphi/Antlr (ใหม่ล่าสุดคือ Grammartest2020.pas )