Ce projet Sonarsource est un analyseur de code statique pour le langage PHP utilisé comme extension pour la plate-forme Sonarqube. Il vous permettra de produire un code propre stable et facilement pris en charge en vous aidant à trouver et à corriger les bogues, les vulnérabilités et les odeurs de code.
Pour fournir des commentaires (demandez une fonctionnalité, signalez un bogue, etc.) Utilisez le forum de la communauté Sonarsource. N'oubliez pas de spécifier la langue (PHP!), La version du plugin et la version Sonarqube.
Si vous avez une question sur la façon d'utiliser le plugin (et les documents ne vous aident pas), nous vous encourageons également à utiliser le forum communautaire.
Pour demander une nouvelle fonctionnalité, veuillez créer un nouveau fil dans le forum communautaire de Sonarsource. Même si vous prévoyez de le mettre en œuvre vous-même et de le soumettre à la communauté, veuillez d'abord démarrer un nouveau fil pour vous assurer que nous pouvons le suivre.
Pour soumettre une contribution, créez une demande de traction pour ce référentiel. Veuillez vous assurer que vous suivez notre style de code et que tous les tests passent.
Si vous avez une idée pour une règle, mais que vous n'êtes pas sûr que tout le monde en a besoin, vous pouvez implémenter une règle personnalisée disponible uniquement pour vous.
newIssue ajouté à l'interface API CheckContextPHPCustomRulesDefinition a été supprimé, il a été déprécié depuis la version 2.13 (mars 2018)ParameterTree#type() est obsolète. Utilisez plutôt ParameterTree#declaredType() .ReturnTypeClauseTree#type() est obsolète. Utilisez à la place ReturnTypeClauseTree#declaredType() .ClassPropertyDeclarationTree#typeAnnotation() est déprécié. Utilisez ClassPropertyDeclarationTree#declaredType() à la place.CatchBlockTree#variable() peut désormais retourner NULL .FunctionCallTree#arguments() est obsolète. Utilisez à la place FunctionCallTree#callArguments() .AnonymousClassTree#arguments() est obsolète. Utilisez à la place AnonymousClassTree#callArguments() .CallArgumentTree . Cet arbre enveloppe les expressions passées comme arguments maintenant.ThrowExpressionTree .MatchExpressionTree .ParameterTree a désormais une méthode visibility .Pour exécuter des tests localement, suivez ces instructions.
Pour construire le plugin et exécuter ses tests unitaires, exécutez cette commande à partir du répertoire racine du projet:
./gradlew build Pour exécuter des tests d'intégration, vous devrez créer un fichier de propriétés comme celui ci-dessous et définir son emplacement dans une variable d'environnement nommée ORCHESTRATOR_CONFIG_URL .
# version of SonarQube server
sonar.runtimeVersion =9.9Avant d'exécuter l'un des tests d'intégration, assurez-vous que les sous-modules sont vérifiés:
git submodule update --initLe "test de plugin" est un test d'intégration supplémentaire qui vérifie les fonctionnalités du plugin telles que le calcul métrique, la couverture, etc. pour le lancer:
./gradlew its:plugin:integrationTestLe «test de décision» est un test d'intégration spécial qui lance l'analyse d'une grande base de code, enregistre les problèmes créés par le plugin dans les fichiers de rapport, puis compare ces résultats à l'ensemble des problèmes attendus (stockés sous forme de fichiers JSON). Pour lancer le test dirigeant:
./gradlew its:ruling:integrationTestCe test vous donne la possibilité d'examiner les problèmes créés par chaque règle et de vous assurer qu'ils attendent. Vous pouvez inspecter les problèmes nouveaux / perdus en vérifiant l'URL locale de Sonarqube mentionnée dans les journaux à la fin de l'analyse. Si tout vous semble bon, vous pouvez copier le fichier avec les problèmes réels situés à
sonar-php/its/ruling/target/actual/
dans le répertoire avec les problèmes attendus
sonar-php/its/ruling/src/test/resources/expected/
Pour mettre à jour toutes les descriptions de règles:
./gradlew ruleApiUpdatePour récupérer des fichiers statiques pour une règle sxxxx à partir de RSpec:
./gradlew ruleApiGenerateRule -Prule=SXXXX Idem pour une branche RSPEC spécifique ( master par défaut):
./gradlew ruleApiGenerateRule -Prule=SXXXX -Pbranch=my-branchCopyright 2010-2024 Sonarsource.
Les analyseurs de SonarQube publiés après le 29 novembre 2024, y compris les correctifs de correctifs pour les versions antérieures, sont publiés sous la version 1 à la licence disponible sur la source sonar (SSALV1).
Voir les fichiers individuels pour plus de détails qui spécifient la licence applicable à chaque fichier. Les fichiers soumis au SSALV1 seront notés dans leurs en-têtes.