該聲音項目是用於Sonarqube平台擴展的PHP語言的靜態代碼分析儀。它可以通過幫助您找到和糾正錯誤,漏洞和代碼氣味來產生穩定且易於支持的干淨代碼。
要提供反饋(請求功能,報告錯誤等)使用Sonarsource社區論壇。請不要忘記指定語言(PHP!),插件版本和Sonarqube版本。
如果您對如何使用插件(並且文檔無濟於事)有一個疑問,我們也鼓勵您使用社區論壇。
要請求新功能,請在Sonarsource社區論壇中創建一個新線程。即使您打算自己實施並將其提交給社區,請先開始一個新線程,以確保我們可以跟進它。
要提交貢獻,請為此存儲庫創建拉動請求。請確保您遵循我們的代碼樣式,並且所有測試都通過。
如果您有規則的想法,但是您不確定每個人都需要它,您可以實現僅適用於您的自定義規則。
CheckContext API接口中的其他newIssue端點PHPCustomRulesDefinition ,自2.13版(2018年3月)以來已棄用。ParameterTree#type()被棄用。使用ParameterTree#declaredType() 。ReturnTypeClauseTree#type()已棄用。使用ReturnTypeClauseTree#declaredType() 。ClassPropertyDeclarationTree#typeAnnotation()被棄用。使用ClassPropertyDeclarationTree#declaredType() 。CatchBlockTree#variable()現在可以返回NULL 。FunctionCallTree#arguments()已棄用。使用FunctionCallTree#callArguments()而不是。AnonymousClassTree#arguments()被棄用。而是使用AnonymousClassTree#callArguments() 。CallArgumentTree 。這棵樹現在以參數的方式包裹了表達式。ThrowExpressionTree 。MatchExpressionTree 。ParameterTree現在具有visibility方法。要在本地運行測試,請遵循以下說明。
要構建插件並運行其單元測試,請從項目的根目錄中執行此命令:
./gradlew build要運行集成測試,您將需要創建一個如下所示的屬性文件,並在名為ORCHESTRATOR_CONFIG_URL的環境變量中設置其位置。
# version of SonarQube server
sonar.runtimeVersion =9.9在進行任何集成測試之前,請確保檢查子模型:
git submodule update --init“插件測試”是一個附加的集成測試,該測試驗證了插件功能,例如度量計算,覆蓋範圍等。啟動它:
./gradlew its:plugin:integrationTest“統治測試”是一個特殊的集成測試,它啟動了大型代碼庫的分析,保存了插件在報告文件中創建的問題,然後將這些結果與預期問題集(存儲為JSON文件)進行比較。啟動統治測試:
./gradlew its:ruling:integrationTest該測試使您有機會檢查每個規則所造成的問題,並確保它們是您的期望。您可以通過檢查分析結束時的日誌中提到的Sonarqube本地URL來檢查新/丟失的問題。如果一切對您來說都不錯,則可以將文件複製到所在的實際問題
sonar-php/its/ruling/target/actual/
進入預期問題的目錄
sonar-php/its/ruling/src/test/resources/expected/
更新所有規則說明:
./gradlew ruleApiUpdate從RSPEC獲取規則SXXXX的靜態文件:
./gradlew ruleApiGenerateRule -Prule=SXXXX對於特定的RSPEC分支機構(默認情況master )相同:
./gradlew ruleApiGenerateRule -Prule=SXXXX -Pbranch=my-branch版權2010-2024 Sonarsource。
Sonarqube Analyzers於2024年11月29日發布(包括先前版本的補丁修復程序)發佈在Sonar源可用許可證版本1(SSALV1)下。
有關指定適用於每個文件的許可的詳細信息,請參見各個文件。符合SSALV1的文件將在其標題中註意到。