Dieses SonarSource -Projekt ist ein statischer Codeanalysator für PHP -Sprache, der als Erweiterung für die Sonarqube -Plattform verwendet wird. Dadurch können Sie einen stabilen und leicht unterstützten sauberen Code erstellen, indem Sie Ihnen helfen, Fehler, Schwachstellen und Codegerüche zu finden und zu korrigieren.
Um Feedback zu geben (anfordern, einen Fehler melden usw.) verwenden Sie das SonarSource Community Forum. Bitte vergessen Sie nicht, die Sprache (Php!), Plugin -Version und Sonarqube -Version anzugeben.
Wenn Sie eine Frage haben, wie Sie Plugin verwenden (und die Dokumente helfen Ihnen nicht), empfehlen wir Ihnen auch, das Community -Forum zu verwenden.
Um eine neue Funktion anzufordern, erstellen Sie bitte einen neuen Thread im SonarSource Community Forum. Selbst wenn Sie vorhaben, es selbst zu implementieren und an die Community zurückzugeben, starten Sie zuerst einen neuen Thread, um sicherzustellen, dass wir ihn nachverfolgen können.
Um einen Beitrag einzureichen, erstellen Sie eine Pull -Anfrage für dieses Repository. Bitte stellen Sie sicher, dass Sie unserem Codestil folgen und dass alle Tests bestehen.
Wenn Sie eine Idee für eine Regel haben, sich jedoch nicht sicher sind, ob jeder sie benötigt, können Sie eine benutzerdefinierte Regel nur für Sie implementieren.
newIssue -Endpunkt, der der CheckContext -API -Schnittstelle hinzugefügt wurdePHPCustomRulesDefinition wurde entfernt, es wurde seit Version 2.13 (März 2018) veraltetParameterTree#type() ist veraltet. Verwenden Sie stattdessen ParameterTree#declaredType() .ReturnTypeClauseTree#type() ist veraltet. Verwenden Sie stattdessen ReturnTypeClauseTree#declaredType() .ClassPropertyDeclarationTree#typeAnnotation() ist veraltet. Verwenden Sie stattdessen ClassPropertyDeclarationTree#declaredType() .CatchBlockTree#variable() kann jetzt NULL zurückgeben.FunctionCallTree#arguments() ist veraltet. Verwenden Sie stattdessen FunctionCallTree#callArguments() .AnonymousClassTree#arguments() ist veraltet. Verwenden Sie stattdessen AnonymousClassTree#callArguments() .CallArgumentTree . Dieser Baum wickelt Ausdrücke, die jetzt als Argumente bestanden wurden.ThrowExpressionTree .MatchExpressionTree .ParameterTree hat jetzt eine visibility .Um Tests lokal auszuführen, folgen Sie diesen Anweisungen.
Führen Sie diesen Befehl aus dem Stammverzeichnis des Projekts aus, um das Plugin zu erstellen und seine Unit -Tests auszuführen:
./gradlew build Um Integrationstests auszuführen, müssen Sie eine Eigenschaftendatei wie die unten gezeigte erstellen und ihren Standort in einer Umgebungsvariablen mit dem Namen ORCHESTRATOR_CONFIG_URL festlegen.
# version of SonarQube server
sonar.runtimeVersion =9.9Stellen Sie vor dem Ausführen einer der Integrationstests sicher, dass die Submodules untersucht werden:
git submodule update --initDer "Plugin -Test" ist ein zusätzlicher Integrationstest, der Plugin -Funktionen wie metrische Berechnung, Abdeckung usw. überprüft, um ihn zu starten:
./gradlew its:plugin:integrationTestDer "Regierungstest" ist ein spezieller Integrationstest, der die Analyse einer großen Codebasis auf den Markt bringt, die vom Plugin in Berichtsdateien erstellten Probleme speichert und diese Ergebnisse dann mit dem Satz erwarteter Probleme vergleicht (gespeichert als JSON -Dateien). Um den herrschenden Test zu starten:
./gradlew its:ruling:integrationTestDieser Test bietet Ihnen die Möglichkeit, die von jeder Regel erzeugten Probleme zu untersuchen und sicherzustellen, dass Sie das erwarten. Sie können neue/verlorene Probleme inspizieren, indem Sie die in den Protokollen am Ende der Analyse erwähnte Sonarqube -URL der Sonarqube überprüfen. Wenn für Sie alles gut aussieht, können Sie die Datei mit den tatsächlichen Problemen kopieren
sonar-php/its/ruling/target/actual/
in das Verzeichnis mit den erwarteten Problemen
sonar-php/its/ruling/src/test/resources/expected/
So aktualisieren Sie alle Regelbeschreibungen:
./gradlew ruleApiUpdateUm statische Dateien für eine Regel SXXXX von RSPEC abzurufen:
./gradlew ruleApiGenerateRule -Prule=SXXXX Gleiches gilt für einen bestimmten RSPEC -Zweig (standardmäßig master ):
./gradlew ruleApiGenerateRule -Prule=SXXXX -Pbranch=my-branchCopyright 2010-2024 Sonarsource.
Sonarqube Analyzers, die nach dem 29. November 2024 veröffentlicht wurden, einschließlich Patch-Fixes für frühere Versionen, werden unter der Sonar-Quelle-verfügbaren Lizenzversion 1 (SSALV1) veröffentlicht.
Einzelheiten finden Sie in Einzeldateien, die die für jede Datei zutreffende Lizenz angeben. Dateien, die dem SSALV1 unterliegen, werden in ihren Kopfzeilen vermerkt.