西安青穗信息技术有限责任公司
主营产品: 安全软件
SonarQube价格-软件授权-正版购买-技术支持-中国代理商
价格
订货量(套)
面议
≥1
店铺主推品 热销潜力款
㜉㜈㜆㜆㜃㜄㜃㜆㜄㜊㜈
在线客服
SonarQube的介绍
1.SonarQube简介
SonarQube是一个用于代码质量管理的开源平台,用于管理源代码的质量。同时 SonarQube 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 SonarQube。此外, SonarQube 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。
2.SonarQube的使用范围
通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测,针对不同的编程语言其所提供的分析方式也有所不同: 对于所有支持的编程语言,SonarQube 都提供源了代码的静态分析功能; 对于某些特定的编程语言,SonarQube 提供了对编译后代码的静态分析功能。
3.SonarQube工作原理
SonarQube 并不是简单地将各种质量检测工具的结果(例如 FindBugs,PMD 等)直接展现给客户,而是通过不同的插件算法来对这些结果进行再加工,最终以量化的方式来衡量代码质量,从而方便地对不同规模和种类的工程进行相应的代码质量管理。 SonarQube 在进行代码质量管理时,会从图 1 所示的七个纬度来分析项目的质量。
4.需要注意的代码质量问题
1)不遵循代码标准--SonarQube 可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规 范代码编写。
2)潜在的缺陷--SonarQube 可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷。
3)糟糕的复杂度分布-->文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。
4)重复-->显然程序中包含大量复制粘贴的代码是质量低下的,SonarQube 源码中重复严重的地方。
5)注释不足或者过多-->没有注释将使代码可读性变差,特别是当不可避免地出现人员变动 时,程序的可读性将大幅下降而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。
6)缺乏单元测试 -->SonarQube 可以很方便地统计并展示单元测试覆盖率。
是需要被分析的源码,如我们的app工程源码,SonarQube支持多种语言和多种工程结构,Andriod是属于一种多模块的java工程。
SonarQube Scanner
是用于执行代码分析的工具,在Project的根目录下执行,我们还需要在Project下进行SonarQube配置,其中指定了工程的相关信息,还指定了SonarQube Server的地址,SonarQube Scanner分析完毕之后,会将结果上报到该Server。
注:官方对Scanner的描述是“The SonarQube Scanner is recommended as the default launcher to analyze a project with SonarQube”,个人理解是可以用任何其它的工具替代,只要能对Source进行分析,并生成Server能构解析的数据格式上报给Server。
SonarQube Server
显示分析结果的Web Server,在SonarQube Scanner第一次将一个工程的分析结果上报给SonarQube Server后,Server上会自动创建一个工程显示分析的结果,可以在Server上设置代码质量管理相关的各种配置,如设置代码检查规则(Rule)和质量门限(Quality Gate)等。
SonarQube配置
SonarQube支持多种工程构建方式的配置,也对应需要用不同的Scanner来执行分析过程:
Ant
Maven
MSBuild(Microsoft Build Engine)
Gradle
Sonar Runner
下面只讲一下我们目前用得到的两种,即Gradle和Sonar Runner
Gradle
scanner:采用gradle plugin,gradle自带了sonarqube的plugin
config方式:gradle task
运行方式:gradle sonarqube
apply plugin: "org.sonarqube"
sonarqube {
sonarProperties {
property "sonar.host.url", "http://sonarqube.example.com"
property "sonar.projectName", "AndroidDemo"
property "sonar.projectKey", "AndroidDemo"
property "sonar.version", "2.3.2"
property "sonar.sources", "src/main/java" // module会继承该路径,也可以重载掉该值
}
}
SonarSource为代码质量提供了世界一流的解决方案。其开源和商业版本可帮助各种规模的客户管理其应用程序的代码质量,降低风险并最终交付更可靠的软件。
SonarSource提供SonarQube代码管理平台和SonarLint IDE开发插件。SonarQube在持续集成项目中,可以通过jenkins插件在项目中快速实现代码扫描,并且提供了详细的问题分析和bugs修改意见。
全球超过1000多家客户,包括三星、腾讯、招商银行等,并被超过85,000家组织使用。
SonarSource解决方案通过插件形式支持20多种编程语言(如Java,C#,JavaScript,C/C++,TypeScript,COBOL等)开发的代码。
以SonarJava插件为例SonarSource支持498种规则,bugs、vulnerablility、code smell三大类问题,包括Android、api-design、bad-practive等代码质量问题;兼容Cert、CWE和OWASP等安全性代码规约;及代码编写规约。