Esta bifurcación de Sonardelphi ahora está muy desactualizada y no ha tenido ninguna contribución durante algunos años.
Embarcadero recomienda que adopte la bifurcación que se encuentra aquí: https://github.com/integrated-application-development/sonar-delphi
Su bifurcación ha sido aceptado y adoptado por Sonarqube, que es un logro maginífico.
La versión oficial de Embarcadero del complemento Sonar Delphi para analizar el código fuente de Delphi con Sonarqube. Trabajar para recopilar actualizaciones y contribuciones de otras versiones a este y avanzar si avanza con nuevas características. Gracias a Joachim Marder de Jam Software, y Laurens Van Run de Mendrix por trabajar con nosotros en esto, y a todos los que han contribuido a los proyectos de Sonar-Delphi en Github.
Estamos aceptando solicitudes de extracción y buscando más contribuyentes.
Ya no aceptamos solicitudes de extracción. Le recomendamos que contribuya al repositorio alternativo anterior.
Es un complemento Sonarqube que proporciona
.html opcional para testcoverageEsta es la versión de complemento 1.0. Sonarqube 7.9 (LTS) o superior se necesita (probado con Sonarqube 7.9.3 y 8.2.0)
El complemento Sonarqube Delphi utiliza el sistema de seguimiento de problemas integrado de GitHub para grabar errores y solicitudes de funciones. Si desea plantear un problema, siga las recomendaciones a continuación:
Codecoverage se puede hacer a través de la herramienta DelphicodeCoverage. Usar
CodeCoverage.exe -xml -xmllines
Para crear una salida XML que se pueda importar a través de este complemento. Por lo tanto, debe editar las propiedades de su proyecto de sonar:
sonar.delphi.codecoverage.tool=dcc
sonar.delphi.codecoverage.report=Test/CoverageResults/CodeCoverage_Summary.xml
Para importar los TestResults de Dunit, debe usar la [Extensión Dunit] (https://github.com/mendrix/dunit-extension) y usar el corredor suministrado (no es necesario cambiar sus clases de prueba a ttestCaseExtension).
ExitCode := TTestRunnerUtils.RunRegisteredTests;
Esto ejecutará sus pruebas con GUI si no se dan parámetros. Con el parámetro -xml la herramienta creará una salida XML que es compatible con JUnit para Sonarqube. Con -output su puede especificar el directorio de salida
MyTester.exe -xml -output <outputdirectory>
Para importar estos resultados de las pruebas, agregue la siguiente línea a las propiedades de su proyecto de sonar:
sonar.junit.reportsPath=TestResults
También debe especificar dónde el complemento puede encontrar sus archivos de prueba. Es importante que los archivos fuente de sus pruebas estén excluidos en su directorio de fuentes.
sonar.exclusions=MyTestFiles/*
sonar.tests=MyTestFiles
También es posible importar resultados de DUNITX. Por lo tanto, debe agregar el archivo
DUnitX.Loggers.XML.SonarQube.pas
a su proyecto Dunitx. Luego cambie el .espRes de su aplicación y agregue la funcionalidad para un directorio de fuentes (esto se utiliza para encontrar el archivo .pas correcto correspondiente a la unidad Delphi de 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);
Para importar el archivo XML resultante, agregue la siguiente línea a las propiedades de su proyecto de sonar:
sonar.testExecutionReportPaths=Test/TEST-dunitx-sqresults.xml
Para tener resultados de CodCoverage y Unittests para Sonarqube, debe combinar las opciones anteriores. Por ejemplo:
CodeCoverage.exe -e MyTester.exe -m MyTester.map -a ^^-xml^^ ^^-output TestResults^^ -ife -spf sourcedirs.txt -uf unitstotest.txt -od CoverageResults -html -xml -xmllines
Para construir un complemento, necesita Java 8 y Maven 3.1 (o mayor).
mvn compile
mvn test
mvn package
Ahora puede copiar el complemento del directorio /target/ al directorio de complemento Sonarqube.
Primero ejecuta el objetivo de Eclipse Maven:
mvn eclipse:eclipse
El proyecto se puede importar al eclipse utilizando el archivo -> importar y luego seleccionar los proyectos generales -> existentes en el espacio de trabajo.
Simplemente abra el pom.xml en IntelliJ debería resolver la mayoría de las dependientes por sí solas.
Sonarqube tiene una excelente documentación sobre el desarrollo de un complemento. Para depurar este complemento con el escáner SONARQUBE, solo establece la siguiente variable de entorno (en Windows):
SET SONAR_SCANNER_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000"
Ahora adjunta su depurador Eclipse (u otro) al puerto 8000 para comenzar a depurar.
El complemento utiliza una gramática ANTLR3 para analizar el idioma Delphi. La definición de gramática se puede encontrar en /src/main/antlr3/org/sonar/plugins/delphi/antlr/delphi.g . Una manera fácil de verificar y modificar esta gramática es usar AntlrWorks. Aquí puede probar su gramática en nuevos archivos e implementar nuevas definiciones de idioma.
Después de cambiar y probar con éxito la gramática Delphi.g, debe generar el nuevo código analizador (generar el menú, el código de generación de opciones). Ahora copie los archivos Delphilexer.java y Delphiparser.java desde /src/main/antlr3/org/sonar/plugins/delphi/antlr/output/ to /src/main/java/org/sonar/plugins/delphi/antlr/ y (re) construir el complemento.
Nota: es importante asegurarse de que también se prueben sus nuevos cambios en la gramática. Si solo tiene que asegurarse de que puedan analizarse sin errores, puede agregar sus nuevas características de idioma a uno de los archivos gramaticales existentes en /src/main/java/org/sonar/plugins/delphi/antlr (el más nuevo es grammartest2020.pas ).