代码安全平台 sonarqube

优质
小牛编辑
132浏览
2023-12-01

第一章 SonarQube简介

1.1 SonarQube介绍

Sonar 是一个用于代码质量管理的开源平台,用于管理源代码的质量

通过插件形式,可以支持包括 java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy,HTML,Python,PHP,XML等等二十几种编程语言的代码质量管理与检测

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

  1. 不遵循代码标准 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规 范代码编写
  2. 潜在的缺陷 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷
  3. 糟糕的复杂度分布 文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员 难以理解它们 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试
  4. 重复 显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示 源码中重复严重的地方
  5. 注释不足或者过多 没有注释将使代码可读性变差,特别是当不可避免地出现人员变动 时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷
  6. 缺乏单元测试 sonar可以很方便地统计并展示单元测试覆盖率
  7. 糟糕的设计

第二章 SonarQube的安装使用

2.1 SonarQube安装配置

2.1.1 下载

1.SonarQube服务端下载地址:https://www.sonarqube.org/downloads/; 文件下载完成后将文件解压到usr/local目录下,解压后的目录结构如下:

2.SonarQube客户端工具下载:http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.4/sonar-runner-dist-2.4.zip 文件下载完成后将文件解压到usr/local目录下,解压后的目录结构如下:

3.中文补丁包下载地址:https://github.com/SonarQubeCommunity/sonar-l10n-zh

2.1.2 SonarQube的环境变量的配置

1.vim ~/.bash_profile

export SONAR_HOME=/usr/local/sonarqube-5.6.6

export SONAR_RUNNER_HOME=/usr/local/sonar-runner-2.4

export PATH=$PATH:$SONAR_RUNNER_HOME/bin:$JAVA_8_HOME/bin

配置完成后环境变量生效

source ~/.bash_profile

试验:sonar-runner -v


2.3启动SonarQube

cd /usr/local/sonarqube-5.6.6/bin/macosx-universal-64

./sonar.sh start

查看启动日志:

tail -f /usr/local/sonarqube-5.6.6/logs/sonar.log

关闭命令:

./sonar.sh stop

登录:http://localhost:9000/sonarqube

默认密码:admin/admin

2.2 Jetbrains安装SonarQube插件

第三章 SonarQube使用

3.1 SonarLint

SonarLint可以连接到SonarQube服务器,下载服务器里面的规则。但是不能将分析结果上传到SonarQube

3.2 使用Jenkins+SonarQube

给Jenkins安装SonarQube Scanner插件,在“构建”步骤,增加SonarQube Scan环节即可。

3.3 毫末使用

3.3.1 后端项目(JeecgBackend项目模板已经配置)

# 1. 在http://sonar.haomo-tech.com中新增项目。新增项目时创建令牌,并指定项目为maven(或gradle)工程;
# 2. web中会提示类似下面的命令
mvn sonar:sonar \
  -Dsonar.projectKey=JeecgBackend \
  -Dsonar.host.url=http://sonar.haomo-tech.com \
  -Dsonar.login=62f2e9377032dacf2cbd9e6edbf791ab5xxxxxx

可以在工程的sonar-project.properties中配置参数,示例如下:

sonar.language=java
sonar.projectKey=JeecgBackend
sonar.projectName=JeecgBackend
sonar.projectVersion=2.1.0s
sonar.sourceEncoding=UTF-8
sonar.sources=./jeecg-boot-module-system/src/main/java/
sonar.host.url=http://sonar.haomo-tech.com
sonar.java.binaries=./jeecg-boot-module-system/target/
sonar.login=62f2e9377032dacf2cbd9e6edbf791ab5xxxxxx

3.3.2 前端项目(JeecgWeb项目模板已经配置)

# 1. 在http://sonar.haomo-tech.com中新增项目。新增项目时创建令牌(或使用已有令牌),并指定项目为javascript/macos;
# 2. web中会提示类似下面的命令
sonar-scanner \
  -Dsonar.projectKey=JeecgWeb \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://sonar.haomo-tech.com \
  -Dsonar.login=62f2e9377032dacf2cbd9e6edbf791ab5xxxxxx
# 3. 为了方便使用,我们在JeecgWeb中增加了sonar.sh和sonar-project.properties两个文件。执行sonar.sh即可

3.4 自定义规则

官方规则库:https://rules.sonarsource.com/

3.5 Sonarqube插件

推荐插件:FindBugs/CheckStyle/GitLab Auth/Git

参考资料