基于docker搭建SonarQube代码检测工具

SonarQube代码质量检查工具

Sonar (SonarQube)是一个开源平台,用于管理源代码的质量。
Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。
支持Java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。
官网地址:https://www.sonarqube.org
中文文档地址:https://revolyw.gitbooks.io/sonarqube/content/

SonarQube代码检测的七个维度

  1. 不遵循代码标准(Coding Standards Breach)

    sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。

  2. 潜在的缺陷(Bugs and Potential Bugs)

    sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷。

  3. 糟糕的复杂度分布(Bad Distribution of Complexity)

    文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员 难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。

  4. 重复(Duplications)

    显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示 源码中重复严重的地方。

  5. 注释不足或者过多(Not Enough or Too Many Comments)

    没有注释将使代码可读性变差,特别是当不可避免地出现人员变动 时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。

  6. 缺乏单元测试(Lack of Unit Tests)

    sonar可以很方便地统计并展示单元测试覆盖率。

  7. 糟糕的设计

    通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测藕合。

环境准备

  • 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 关闭selinux
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
  • 关闭swap
swapoff -a
yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab
  • 修改内核参数
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p
  • 创建数据挂载目录
mkdir -p /data/postgres
mkdir /data/sonarqube_data
mkdir /data/sonarqube_extensions
mkdir /data/sonarqube_logs
chown -R 999  /data/sonarqube_data  /data/sonarqube_extensions  /data/sonarqube_logs

环境部署

  • 安装postgres
docker run -d -p 5432:5432 --name sonarqube_postgres \
-v /data/postgres:/var/lib/postgresql/data \
-e POSTGRES_USER=sonarqube \
-e POSTGRES_PASSWORD=sonarqube \
-e PGDATA=/var/lib/postgresql/data/pgdata postgres
  • 安装SonarQube
docker run -d -p 9000:9000 -p 9092:9092 --name sonarqube \
-v /data/sonarqube_data:/opt/sonarqube/data \
-v /data/sonarqube_extensions:/opt/sonarqube/extensions \
-v /data/sonarqube_logs:/opt/sonarqube/logs \
-e SONAR_JDBC_USERNAME=sonarqube \
-e SONAR_JDBC_PASSWORD=sonarqube \
-e SONAR_JDBC_URL="jdbc:postgresql://192.168.10.81:5432/sonarqube" \
sonarqube

访问IP地址+9000,默认账号密码都是admin

安装语言包

在这里插入图片描述我已经装完了所以显示的是中文,初始的是英文的,但是位置不变
在这里插入图片描述点击安装重启即可

检测java代码

  • 安装java语言包
    在这里插入图片描述重启服务

  • 创建项目
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 进入代码目录

mvn clean install sonar:sonar \
  -Dsonar.projectKey=task \
  -Dsonar.host.url=http://192.168.10.81:9000 \
  -Dsonar.sourceEncoding=UTF-8 \
  -Dsonar.java.binaries=target/classes \
  -Dsonar.java.coveragePlugin=jacoco \
  -Dsonar.sources=src/main/java \
  -Dsonar.login=87474c41ef5532d402a138bf46a746c0acc067de

编译完成后可以到SonarQube的web页面查看
在这里插入图片描述

利用sonar-scanner检测代码

  • 获取sonar-scanner安装包并配置
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.0.3.778-linux.zip
unzip sonar-scanner-cli-3.0.3.778-linux.zip && mv sonar-scanner-cli-3.0.3.778-linux.zip sonar-scanner && cd sonar-scanner
vim conf/sonar-scanner.properties 
sonar.host.url=http://192.168.10.81:9000
sonar.sourceEncoding=UTF-8
sonar.jdbc.username=sonarqube
sonar.jdbc.password=sonarqube
sonar.jdbc.url=jdbc:postgres//192.168.10.81/sonarqube
sonar.login=admin
sonar.password=admin
  • 在代码跟目录创建一个sonar-project.properties
vim sonar-project.properties
sonar.projectKey=sso
sonar.language=java
sonar.java.binaries=./
sonar.host.url=http://192.168.10.81:9000
sonar.login=sso
sonar.login=admin
sonar.password=admin
  • 开始扫描
/app/sonar-scanner/bin/sonar-scanner

猜你喜欢

转载自blog.csdn.net/qq_33235529/article/details/107101402