SonarQube是一个开源的代码质量管理系统,用于检测代码中的错误,漏洞和代码规范,它可以与现有的GitLab,Jenkins集成,以便在项目拉取后进行连续的代码检查

依赖于MYSQL5.6以上

安装:

1:环境准备

image-20210106203528628

安装JDK

安装mysql数据库

启动数据库

给数据库配置密码

创建一个sonar的数据库

查看这个库

image-20210106203724080

安装sonar

解压,配置用户,授权

配置sonar

登录:IP:9000

初始用户admin

密码admin

生成token令牌

下载Sonar-scanner客户端进行扫描

插件

汉化插件

image-20210106204326426

安装代码检查插件

image-20210106204423017

线上安装也可以,不过时间太长

下载安装包,解压,授权,然后重启sonarQube

项目分析

在Jenkins安装sonar-scanner客户端代码扫描工具

配置客户端与服务端的链接

image-20210106204833638

配置开启token

image-20210106204932405

执行扫描命令;

Sonar中就可以出现

image-20210106205201777

Java的项目直接通过Maven进行检测

执行命令

image-20210106205334320

如何通过JenKins将代码抓过来,扫描,扫描之后再编译,编译之后再推送,

Jenkins安装sonarQube插件

在Jenkins上配置SonarQube服务端

image-20210106205642716

image-20210106205807577

在Jenkins上配置Sonar-Scanner工具路径

image-20210106205851834

配置发布项目前先扫描sonar项目

image-20210106210113935

Jenkins集成Git或则SVN

配置Maven项目集成Sonar

Maven项目可以使用Sonar-Scanner工具,也可以使用Maven的方式进行检测,两种方式任选其一即可。

方式1:通过Sonar-Scanner方式进行代码质检

image-20210106210834222

方式二:Maven方式

image-20210106210815215

常见审查提示

认知复杂度过高

认知复杂度是衡量一个方法的控制流程有多困难去理解。具有高认知复杂度的方法将难以维护。sonar要求复杂度要在15以下

Cognitve Complexity的计算:

(1)&&、|| 条件判断符号 +1

(2)if、else if、else、switch 分支语句+1

(3)for、while、do while 循环语句+1

(4)catch 捕获异常语句+1

(5)break、continue 中断语句+1

(6)如果if、for、while、do while、catch存在嵌套时,里层的语句相对于外层+1。

修改思路:

1.减少if、for、while、do while、catch关键字嵌套,可以把深层次的代码抽象成方法。

2.如果大量相似的if-else语句可以考虑用switch代替

3.没啥规律就看见if、for等关键字提成方法

results matching ""

    No results matching ""