代码静态扫描工具sonar介绍

一、SonarQube整体介绍

   SonarQube为静态代码检查工具,采用B/S架构,帮助检查代码缺陷,改善代码质量,提高开发速度,通过插件形式,可以支持Java、C、C++、JavaScripe等等二十几种编程语言的代码质量管理与检测。

   通过客户端插件分析源代码,sonar客户端可以采用IDE插件、Sonar-Scanner插件、Ant插件和Maven插件方式,并通过各种不同的分析机制对项目源代码进行分析和扫描,并把分析扫描后的结果上传到sonar的数据库,通过sonar web界面对分析结果进行管理

可以从七个维度检测代码质量:

(1)复杂度分布(complexity):代码复杂度过高将难以理解
(2) 重复代码(duplications):程序中包含大量复制、粘贴的代码而导致代码臃肿,sonar可以展示源码中重复严重的地方

(3) 单元测试统计(unit tests):统计并展示单元测试覆盖率,开发或测试可以清楚测试代码的覆盖情况
(4) 代码规则检查(coding rules):通过Findbugs,PMD,CheckStyle等检查代码是否符合规范
(5) 注释率(comments):若代码注释过少,特别是人员变动后,其他人接手比较难接手;若过多,又不利于阅读
(6) 潜在的Bug(potential bugs):通过Findbugs,PMD,CheckStyle等检测潜在的bug

(7) 结构与设计(architecture & design):找出循环,展示包与包、类与类之间的依赖、检查程序之间耦合度

二、SonarQube平台由四部分组成:

1、 SonarQubeServer 

1) Web Server, 浏览质量的快照和配置sonarqube实例

2)SearchServer based on Elasticsearch, 执行来自页面的查询请求

3)Compute EngineServer ,处理代码分析报告并保存在sonarqube数据库

2、SonarQube Database :

 1) sonarqube实例的配置(安全、插件设置等)

2) 项目、视图等的质量快照。

3、SonarQube Plugins

语言、SCM、集成、身份验证和治理插件

一个或多个sonarqube Scanners运行分析项目

 

三、集成

下面是SonarQube与其他sonarqube ALM工具如何集成以及SonarQube各种组件在何处被使用。

1)开发者在IDE开发代码并使用sonarlint运行本地分析

2)开发者把代码提交到SCM工具中:git, SVN, TFVC, ...

3)持续集成服务器触发自动编译以及执行SonarQubeScanner

4)SonarQubeServer 处理分析报告

5)SonarQubeServer 处理并存贮分析报告到数据库里并在页面上显示处理结果.

6)开发者审查解决他们的问题,在页面管理问题

7)管理者获得分析报告
Ops
可以使用API从 SonarQube抽取数据
Ops 可以使用 JMX 监控 SonarQubeServer.

四、关于机器部署

1、只能有1SonarQube Server 1 SonarQube Database

2、考虑性能优化,每一个组件(server, database, scanners)应当安装在不同的机器上,并且是专用服务器。

3SonarQubeScanners 可以水平扩展机器

4、所有机器的时间必须要同步

5SonarQube Server SonarQube Database 必须在同一网段

6SonarQubeScanners SonarQube Server可以不在同一网段

### Sonar 在 Java 代码质量分析中的作用 Sonar 是一款广泛使用的静态代码分析工具,专注于提高代码质量和安全性。它支持多种编程语言,包括 Java,并能够检测代码中潜在的漏洞、坏味道以及不符合编码规范的部分[^1]。 ### Sonar 的核心功能 - **漏洞检测**:Sonar 能够识别代码中存在的安全漏洞,例如 SQL 注入、跨站脚本攻击(XSS)等。 - **代码异味检查**:通过规则引擎,Sonar 可以发现代码中违反最佳实践或可读性差的部分。 - **代码复杂度分析**:帮助团队了解类和方法的复杂度,从而优化结构,减少维护成本。 - **重复代码检测**:自动识别项目中的重复代码块,有助于提升代码复用性和一致性。 - **技术债务估算**:提供对修复问题所需工作量的估算,便于团队优先处理关键问题[^1]。 ### 安装与配置 Sonar 为了开始使用 Sonar 对 Java 项目进行质量分析,需要先安装并配置 SonarQube 服务器。以下是一个典型的 Maven 项目配置示例: ```xml <properties> <!-- Sonar服务器地址 --> <sonar.host.url>http://localhost:9000</sonar.host.url> <!-- Sonar登录用户的token --> <sonar.token>squ_e0deb965101233da5a90dbcd86220XXXXXXXXX</sonar.token> </properties> ``` 此外,还需要确保本地环境已正确设置 JDK 和 Maven,并且 SonarQube 服务正在运行[^3]。 ### 集成到开发流程 将 Sonar 集成到持续集成/持续部署 (CI/CD) 流程中可以自动化执行代码质量检查。对于 Jenkins 用户,可以通过插件轻松实现这一点;而对于 GitHub Actions 或其他 CI 工具,则通常也有相应的官方或社区提供的解决方案。 ### 最佳实践 - **定期更新规则集**:保持 Sonar 规则库的最新状态以适应新的安全威胁和技术变化。 - **自定义规则**:根据组织内部的标准定制特定规则,这有助于统一编码风格并强化安全性要求。 - **结合单元测试覆盖率**:利用 JaCoCo 等工具收集测试覆盖率数据并与 Sonar 结合展示,全面评估代码健康状况。 - **实施质量门禁**:设定明确的质量门槛,在构建过程中强制要求达到一定标准才能通过,这样可以在早期阶段阻止低质量代码进入生产环境[^1]。 ### 社区和支持 如果遇到任何问题或者想要深入了解高级特性,建议查阅 [Sonar 官方文档](https://docs.sonarqube.org/) 获取详细信息。活跃的社区论坛也是获取帮助的好地方,那里有来自全球的经验丰富的开发者分享他们的知识和经验。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值