书史足自悦,安用勤与劬。这篇文章主要讲述搭建SonarQube代码质量平台——提升代码质量相关的知识,希望能为你提供帮助。
1.SonarQube 简介
1.sonar是什么
Sonar是一个用于代码质量管理的开源平台,用于管理代码的质量,通过插件形式可以支持二十几种语言的代码质量检测,通过多个维度的检查了快速定位代码中潜在的或者明显的错误。
文章图片
2.SonarQube与Sonar
【搭建SonarQube代码质量平台——提升代码质量】SonarQube是sonar的服务端,相当于一个web服务器中的tomcat,用来发布应用,在线浏览分析等。
2.安装配置 1.下载 SonarQube
- sonarqubexxx.zip 并且解压即可,下载地址:http://www.sonarqube.org/downloads/
文章图片
- 推荐安装 v7.8版本,更加稳定,且支持mysql。
- 下载完成后解压后,进入
sonarqube-7.8\\bin\\windows-x86-64
目录,点击 StartSonar.bat 启动即可,如下: - SonarQube 服务启动后,默认访问端口
http://127.0.0.1:9000/about
文章图片
2.配置数据库
- 在mysql数据库新建一个库的名称为 sonar
- 修改
./conf/sonar.properties
的db
信息:
sonar.jdbc.username=root
sonar.jdbc.password=root
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&
characterEncoding=utf8&
rewriteBatchedStatements=true&
useConfigs=maxPerformance&
useSSL=false
文章图片
- 配置完成,重启 SonarQube ,数据库中会自动建表
文章图片
- 访问9000端口然后进行登录即可,默认创建的用户名和密码都是
admin
文章图片
- 登陆后,可在system选项卡看到系统信息
文章图片
- Sonar-scanner 工具是对源码进行扫描,并将结果保存到数据库以便用上面的sonarqube进行分析
- 下载地址:https://docs.sonarqube.org/7.8/analysis/scan/sonarscanner/
- 下载解压后,需要配置数据库信息,打开
sonar-scanner-3.3.0.1492-windows\\conf\\sonar-scanner.properties
文件
文章图片
sonar.jdbc.username=root
sonar.jdbc.password=root
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&
characterEncoding=utf8&
rewriteBatchedStatements=true&
useConfigs=maxPerformance&
useSSL=false
3.2 配置环境变量
- 配置 Sonar-scanner 文件的 bin 目录地址,配置到环境变量中
文章图片
- 配置完成后,在控制台验证,使用命令
sonar-scanner
文章图片
- 启动 SonarQube 服务后,进入目录
Administration-Marketplace
,搜索插件Chinese Pack
并安装,即可汉化。 - 由于安装 SonarQube 版本较低,可以前往 Github 上下载汉化插件包
- 下载地址:https://github.com/xuhuisheng/sonar-l10n-zh/tree/sonar-l10n-zh-plugin-9.0
文章图片
- 下载插件包到目录
Sonar\\sonarqube-7.8\\extensions\\plugins
,然后重启服务即可汉化
文章图片
- 在使用 Sonar 扫描代码之前,需要先配置好需要验证的规则,我们可以在质量配置菜单,配置不同代码的验证规则
文章图片
- 可以在右上角,自己创建或者导入备份的验证规则。
- java 可以配置以下相关插件,有大厂配置的一些配置
- sonar-findbugs 插件
- 下载地址:https://github.com/spotbugs/sonar-findbugs
- sonar-pmd-p3c 插件
- 下载地址:https://github.com/caowenliang/sonar-pmd-p3c
- 扫描项目前,需要在项目根目录创建扫描文件
sonar-project.properties
# sonar 登录账号密码
sonar.login=admin
sonar.password=admin# must be unique in a given SonarQube instance
sonar.projectKey=SCM4.0-SCM-JAVA
# this is the name displayed in the SonarQube UI
# 项目名称,和版本号
sonar.projectName=SCM4.0-SCM
sonar.projectVersion=SCM4.0V202103.1.0.20210901# Path is relative to the sonar-project.properties file. Replace "\\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
# If not set, SonarQube starts looking for source code from the directory containing
# the sonar-project.properties file.
# 项目源码路径,以及编译后的路径
sonar.sources=src/main/java
sonar.java.binaries=target/classes# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=GBK
- 创建配置文件后,可以在目录中打开控制台,输入命令
sonar-scanner
,对项目代码进行扫描,扫描完成后就能在后台查看
- SonarQube Unsupported JDBC driver provider: mysql
jvm 1| WrapperSimpleApp: Encountered an error running main: org.sonar.process.MessageException: Unsupported JDBC driver provider: mysql
jvm 1| org.sonar.process.MessageException: Unsupported JDBC driver provider: mysql
- 原因是SonarQube 7.9以上版本已不再支持mysql
- SonarQube启动报错:WrapperSimpleApp: Encountered an error running main: java.nio.file.AccessDeniedExcepti
WrapperSimpleApp: Encountered an error running main: java.nio.file.AccessDeniedException: /opt/sonarqube-6.7.6/temp/conf/es/elasticsearch.yml
java.nio.file.AccessDeniedException: /opt/sonarqube-6.7.6/temp/conf/es/elasticsearch.yml
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.implDelete(UnixFileSystemProvider.java:244)
at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
at java.nio.file.Files.delete(Files.java:1126)
at org.sonar.process.FileUtils2$DeleteRecursivelyFileVisitor.visitFile(FileUtils2.java:186)
at org.sonar.process.FileUtils2$DeleteRecursivelyFileVisitor.visitFile(FileUtils2.java:181)
at java.nio.file.Files.walkFileTree(Files.java:2670)
at java.nio.file.Files.walkFileTree(Files.java:2742)
at org.sonar.process.FileUtils2.deleteDirectoryImpl(FileUtils2.java:143)
at org.sonar.process.FileUtils2.deleteDirectory(FileUtils2.java:112)
at org.sonar.application.AppFileSystem$CleanTempDirFileVisitor.visitFile(AppFileSystem.java:117)
at org.sonar.application.AppFileSystem$CleanTempDirFileVisitor.visitFile(AppFileSystem.java:101)
at java.nio.file.Files.walkFileTree(Files.java:2670)
at org.sonar.application.AppFileSystem.createOrCleanTempDirectory(AppFileSystem.java:96)
at org.sonar.application.AppFileSystem.reset(AppFileSystem.java:62)
at org.sonar.application.App.start(App.java:55)
at org.sonar.application.App.main(App.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)
at java.lang.Thread.run(Thread.java:748)
<
-- Wrapper Stopped-->
Wrapper Started as Daemon
Launching a JVM...
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
Copyright 1999-2006 Tanuki Software, Inc.All Rights Reserved.
- 解决方法:删除sonarqube temp目录下的所有文件即可
推荐阅读
- u盘怎样安装ghost windows8系统镜像图文详细说明
- 快速体验鸿蒙Liteos-A(IMX6ULL的QEMU系统(Windows版本))
- C语言——指针详解
- 鸿蒙系统框架层的启动细节
- C语言 创建一个数组实现函数initemptyreverse
- 鸿蒙分布式小车游戏Demo
- C语言三子棋小游戏开发详细解析
- 鸿蒙轻内核 M 核源码分析(数据结构之任务排序链表)
- C语言进阶—— 字符操作函数+内存操作函数详解(吐血爆肝 !!!)