该声音项目是用于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的文件将在其标题中注意到。