Garpu Sonardelphi ini sekarang sangat ketinggalan zaman dan belum mendapat kontribusi selama beberapa tahun sekarang.
Embarcadero merekomendasikan agar Anda mengadopsi garpu yang ditemukan di sini: https://github.com/integrated-application-development/sonar-delphi
Garpu mereka telah diterima dan diadopsi oleh Sonarqube yang merupakan pencapaian yang melahirkan.
Versi resmi Embarcadero dari plugin Sonar Delphi untuk menganalisis kode sumber Delphi dengan Sonarqube. Bekerja untuk mengumpulkan pembaruan dan kontribusi dari versi lain ke dalam yang ini dan bergerak jika maju dengan fitur baru. Terima kasih kepada Joachim Marder dari Jam Perangkat Lunak, dan Laurens Van Run dari Mendrix untuk bekerja dengan kami dalam hal ini, dan semua orang yang berkontribusi pada proyek Sonar-Delphi di GitHub.
Kami menerima permintaan tarik dan mencari lebih banyak kontributor.
Kami tidak lagi menerima permintaan tarik. Kami menyarankan Anda berkontribusi pada repositori alternatif di atas.
Adalah plugin sonarqube yang menyediakan
.html opsional untuk testCoverageIni adalah plugin-versi 1.0. Sonarqube 7.9 (LTS) atau lebih tinggi diperlukan (diuji dengan SonarQUBE 7.9.3 dan 8.2.0)
Plugin Sonarqube Delphi menggunakan sistem pelacakan masalah terintegrasi GitHub untuk merekam bug dan permintaan fitur. Jika Anda ingin mengangkat masalah, silakan ikuti rekomendasi di bawah ini:
Codecoverage dapat dilakukan melalui alat Delphicodecoverage. Menggunakan
CodeCoverage.exe -xml -xmllines
Untuk membuat output XML yang dapat diimpor melalui plugin ini. Oleh karena itu Anda harus mengedit properti proyek sonar Anda:
sonar.delphi.codecoverage.tool=dcc
sonar.delphi.codecoverage.report=Test/CoverageResults/CodeCoverage_Summary.xml
Untuk mengimpor testresult dari dunit, Anda harus menggunakan [ekstensi dunit] (https://github.com/mendrix/dunit-extension) dan menggunakan pelari yang disediakan (tidak perlu mengubah kelas pengujian Anda menjadi ttestcasextension).
ExitCode := TTestRunnerUtils.RunRegisteredTests;
Ini akan menjalankan tes Anda dengan GUI jika tidak ada parameter yang diberikan. Dengan parameter -xml alat ini akan membuat output XML yang kompatibel dengan junit untuk sonarqube. Dengan -output Anda dapat menentukan direktori output
MyTester.exe -xml -output <outputdirectory>
Untuk mengimpor hasil tes ini, tambahkan baris berikut ke Properti Proyek Sonar Anda:
sonar.junit.reportsPath=TestResults
Anda juga harus menentukan di mana plugin dapat menemukan testfile Anda. Penting bahwa sourceFile dari tes Anda dikecualikan di direktori sumber Anda.
sonar.exclusions=MyTestFiles/*
sonar.tests=MyTestFiles
Dimungkinkan juga untuk mengimpor hasil dari Dunitx. Oleh karena itu Anda harus menambahkan file
DUnitX.Loggers.XML.SonarQube.pas
ke proyek Dunitx Anda. Kemudian ubah .dpr aplikasi Anda dan tambahkan fungsionalitas untuk direktori sumber (ini digunakan untuk menemukan file .pas yang benar sesuai dengan unit delphi dari 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);
Untuk mengimpor file XML yang dihasilkan, tambahkan baris berikut ke Properti Proyek Sonar Anda:
sonar.testExecutionReportPaths=Test/TEST-dunitx-sqresults.xml
Untuk memiliki hasil codecoverage dan unittests untuk Sonarquce, Anda harus menggabungkan opsi di atas. Misalnya:
CodeCoverage.exe -e MyTester.exe -m MyTester.map -a ^^-xml^^ ^^-output TestResults^^ -ife -spf sourcedirs.txt -uf unitstotest.txt -od CoverageResults -html -xml -xmllines
Untuk membangun plugin, Anda memerlukan Java 8 dan Maven 3.1 (atau lebih besar).
mvn compile
mvn test
mvn package
Sekarang Anda dapat menyalin plugin dari /target/ direktori ke direktori plugin Sonarqube.
Pertama menjalankan tujuan Eclipse Maven:
mvn eclipse:eclipse
Proyek ini kemudian dapat diimpor ke Eclipse menggunakan file -> impor dan kemudian memilih umum -> proyek yang ada ke ruang kerja.
Cukup buka pom.xml di IntelliJ harus menyelesaikan sebagian besar ketergantungan dengan sendirinya.
Sonarquce memiliki dokumentasi hebat tentang pengembangan plugin. Untuk men -debug plugin ini dengan pemindai sonarqube Anda untuk hanya mengatur variabel lingkungan berikut (di windows):
SET SONAR_SCANNER_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000"
Sekarang Anda melampirkan Eclipse (atau lainnya) debugger ke Port 8000 untuk memulai debugging.
Plugin ini menggunakan tata bahasa ANTLR3 untuk mengurai bahasa Delphi. Definisi tata bahasa dapat ditemukan di /src/main/antlr3/org/sonar/plugins/delphi/antlr/delphi.g . Cara mudah untuk memeriksa dan memodifikasi tata bahasa ini adalah menggunakan Antlrworks. Di sini Anda dapat menguji tata bahasa Anda pada file baru dan mengimplementasikan definisi bahasa baru.
Setelah berhasil mengubah dan menguji tata bahasa Delphi.g, Anda harus menghasilkan kode parser baru (menu menghasilkan, opsi menghasilkan kode). Sekarang salin file delphilexer.java dan delphiparser.java dari /src/main/antlr3/org/sonar/plugins/delphi/antlr/output/ to /src/main/java/org/sonar/plugins/delphi/antlr/ dan (RE) membangun plugin.
Catatan: Penting untuk memastikan perubahan tata bahasa baru Anda juga diuji. Jika Anda hanya perlu memastikan bahwa mereka dapat diuraikan tanpa kesalahan, Anda dapat menambahkan fitur bahasa baru Anda ke salah satu file tata bahasa yang ada di /src/main/java/org/sonar/plugin/delphi/antlr (yang terbaru adalah grammartest2020.pas ).