作者:幻好

起源:恒生LIGHT云社区

SonarQube 是治理代码品质一个开放平台,能够疾速的定位代码中潜在的或者显著的谬误。
企业个别会搭建平台对我的项目的代码进行整体的校验,集体开发者也能在本机配置部署平台对相干代码进行剖析。
本文将会介绍一下这个工具的装置、配置以及应用。

1.SonarQube 简介

1. sonar是什么

Sonar是一个用于代码品质治理的开源平台,用于治理代码的品质,通过插件模式能够反对二十几种语言的代码品质检测,通过多个维度的查看了疾速定位代码中潜在的或者显著的谬误。

2. SonarQube与Sonar

  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.propertiesdb 信息:
sonar.jdbc.username=rootsonar.jdbc.password=rootsonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
  • 配置实现,重启 SonarQube ,数据库中会主动建表
  • 拜访9000端口而后进行登录即可,默认创立的用户名和明码都是admin
  • 登陆后,可在system选项卡看到零碎信息

3.下载 Sonar-scanner

  • Sonar-scanner 工具是对源码进行扫描,并将后果保留到数据库以便用下面的sonarqube进行剖析
  • 下载地址:https://docs.sonarqube.org/7.8/analysis/scan/sonarscanner/

3.1 配置mysql信息

  • 下载解压后,须要配置数据库信息,关上sonar-scanner-3.3.0.1492-windows\conf\sonar-scanner.properties 文件

sonar.jdbc.username=rootsonar.jdbc.password=rootsonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

3.2 配置环境变量

  • 配置 Sonar-scanner 文件的 bin 目录地址,配置到环境变量中
  • 配置实现后,在控制台验证,应用命令sonar-scanner

4.中文汉化

  • 启动 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 ,而后重启服务即可汉化

4.根本应用

4.1配置代码规制

  • 在应用 Sonar 扫描代码之前,须要先配置好须要验证的规定,咱们能够在品质配置菜单,配置不同代码的验证规定

    • 能够在右上角,本人创立或者导入备份的验证规定。
  • Java 能够配置以下相干插件,有大厂配置的一些配置

    • sonar-findbugs 插件

      • 下载地址:https://github.com/spotbugs/sonar-findbugs
    • sonar-pmd-p3c 插件

      • 下载地址:https://github.com/caowenliang/sonar-pmd-p3c

4.2创立扫描配置文件

  • 扫描我的项目前,须要在我的项目根目录创立扫描文件sonar-project.properties
# sonar 登录账号密码sonar.login=admin      sonar.password=admin# must be unique in a given SonarQube instancesonar.projectKey=SCM4.0-SCM-JAVA# this is the name displayed in the SonarQube UI# 项目名称,和版本号sonar.projectName=SCM4.0-SCMsonar.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/javasonar.java.binaries=target/classes # Encoding of the source code. Default is default system encodingsonar.sourceEncoding=GBK
  • 创立配置文件后,能够在目录中关上控制台,输出命令sonar-scanner ,对我的项目代码进行扫描,扫描实现后就能在后盾查看

5.可能遇到的问题

  • SonarQube Unsupported JDBC driver provider: mysql
jvm 1    | WrapperSimpleApp: Encountered an error running main: org.sonar.process.MessageException: Unsupported JDBC driver provider: mysqljvm 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目录下的所有文件即可
有任何问题,欢送私信交换。