Este proyecto Sonarsource es un analizador de código estático para el lenguaje PHP utilizado como una extensión para la plataforma Sonarqube. Le permitirá producir un código limpio estable y fácilmente compatible ayudándole a encontrar y corregir insectos, vulnerabilidades y olores de código.
Para proporcionar comentarios (solicitar una función, informar un error, etc.), use el Foro de la Comunidad de Sonarsource. No olvide especificar el lenguaje (PHP!), Versión de complemento y la versión Sonarqube.
Si tiene una pregunta sobre cómo usar complementos (y los documentos no lo ayudan), también le recomendamos que use el foro de la comunidad.
Para solicitar una nueva función, cree un nuevo hilo en el Foro de Comunidad de Sonarsource. Incluso si planea implementarlo usted mismo y enviarlo de nuevo a la comunidad, inicie un nuevo hilo primero para asegurarse de que podamos seguirlo.
Para enviar una contribución, cree una solicitud de extracción para este repositorio. Asegúrese de seguir nuestro estilo de código y que todas las pruebas pasen.
Si tiene una idea para una regla, pero no está seguro de que todos lo necesiten, puede implementar una regla personalizada disponible solo para usted.
newIssue adicional agregado a la interfaz de la API de CheckContextPHPCustomRulesDefinition se eliminó, se desactivó desde la versión 2.13 (marzo de 2018)ParameterTree#type() está en desuso. Use ParameterTree#declaredType() en su lugar.ReturnTypeClauseTree#type() está en desuso. Use ReturnTypeClauseTree#declaredType() en su lugar.ClassPropertyDeclarationTree#typeAnnotation() está en desuso. Use ClassPropertyDeclarationTree#declaredType() en su lugar.CatchBlockTree#variable() ahora puede devolver NULL .FunctionCallTree#arguments() está en desuso. Use FunctionCallTree#callArguments() en su lugar.AnonymousClassTree#arguments() está en desuso. Use AnonymousClassTree#callArguments() en su lugar.CallArgumentTree . Este árbol envuelve expresiones aprobadas como argumentos ahora.ThrowExpressionTree .MatchExpressionTree .ParameterTree ahora tiene un método visibility .Para ejecutar pruebas localmente, siga estas instrucciones.
Para construir el complemento y ejecutar sus pruebas unitarias, ejecute este comando desde el directorio raíz del proyecto:
./gradlew build Para ejecutar pruebas de integración, deberá crear un archivo de propiedades como el que se muestra a continuación y establecer su ubicación en una variable de entorno llamada ORCHESTRATOR_CONFIG_URL .
# version of SonarQube server
sonar.runtimeVersion =9.9Antes de ejecutar cualquiera de las pruebas de integración, asegúrese de que se revisen los submódulos:
git submodule update --initLa "prueba de complemento" es una prueba de integración adicional que verifica las características del complemento, como el cálculo métrico, la cobertura, etc. para iniciarla:
./gradlew its:plugin:integrationTestLa "prueba de decisión" es una prueba de integración especial que lanza el análisis de una base de código grande, guarda los problemas creados por el complemento en los archivos de informe y luego compara esos resultados con el conjunto de problemas esperados (almacenados como archivos JSON). Para lanzar la prueba de decisión:
./gradlew its:ruling:integrationTestEsta prueba le brinda la oportunidad de examinar los problemas creados por cada regla y asegurarse de que sean lo que esperas. Puede inspeccionar problemas nuevos/perdidos revisando la URL local de Sonarqube mencionada en los registros al final del análisis. Si todo se ve bien para usted, puede copiar el archivo con los problemas reales ubicados en
sonar-php/its/ruling/target/actual/
en el directorio con los problemas esperados
sonar-php/its/ruling/src/test/resources/expected/
Para actualizar todas las descripciones de reglas:
./gradlew ruleApiUpdatePara obtener archivos estáticos para una regla SXXXX de RSPEC:
./gradlew ruleApiGenerateRule -Prule=SXXXX Lo mismo para una rama RSPEC específica ( master por defecto):
./gradlew ruleApiGenerateRule -Prule=SXXXX -Pbranch=my-branchCopyright 2010-2024 Sonarsource.
Los analizadores SONARQUBE lanzados después del 29 de noviembre de 2024, incluidas las correcciones de parches para versiones anteriores, se publican bajo la Licencia Avalable de SONAR, la versión 1 (SSALV1).
Consulte los archivos individuales para obtener detalles que especifiquen la licencia aplicable a cada archivo. Los archivos sujetos al SSALV1 se anotarán en sus encabezados.