Sonar 安装配置 [Windows]

Sonar简介

SonarQube是一个用于代码质量管理的开源平台,用于管理源代码的质量。同时 SonarQube 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 SonarQube。此外, SonarQube 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。

通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测,针对不同的编程语言其所提供的分析方式也有所不同: 对于所有支持的编程语言,SonarQube 都提供源了代码的静态分析功能; 对于某些特定的编程语言,SonarQube 提供了对编译后代码的静态分析功能。

通过客户端插件分析源代码,sonar客户端可以采用IDE插件、Sonar-Scanner插件、Ant插件和Maven插件方式,并通过各种不同的分析机制对项目源代码进行分析和扫描,并把分析扫描后的结果上传到sonar的数据库,通过sonar web界面对分析结果进行管理。

检测代码质量的七个维度:

  1. 复杂度分布(complexity):代码复杂度过高将难以理解
  2. 重复代码(duplications):程序中包含大量复制、粘贴的代码而导致代码臃肿,sonar可以展示源码中重复严重的地方
  3. 单元测试统计(unit tests):统计并展示单元测试覆盖率,开发或测试可以清楚测试代码的覆盖情况
  4. 代码规则检查(coding rules):通过Findbugs,PMD,CheckStyle等检查代码是否符合规范
  5. 注释率(comments):若代码注释过少,特别是人员变动后,其他人接手比较难接手;若过多,又不利于阅读
  6. 潜在的Bug(potential bugs):通过Findbugs,PMD,CheckStyle等检测潜在的bug
  7. 结构与设计(architecture & design):找出循环,展示包与包、类与类之间的依赖、检查程序之间耦合度

准备资料

说明:sonarqube-7.9之后就不在支持MySql,而且JDK必须是11+,但笔者尝试使用最新的13.0.1时也不成功,建议使用11版本的进行配置。

安装Sonar

  1. 解压sonarqube安装包,如解压后:D:\ProductionEnv\sonarqube-8.0
  2. 在PostgreSQL中建库,如下,数据库名、用户名、密码均为:sonarqube,注意PostgreSQL要开启远程访问。
    create user sonarqube with password 'sonarqube';
    create database sonarqube owner sonarqube;
    grant all  on database sonarqube to sonarqube;
  3. 进入D:\ProductionEnv\sonarqube-8.0\conf,编辑配置文件sonar.properties,指定数据库连接信息
    sonar.jdbc.username=sonarqube
    sonar.jdbc.password=sonarqube
    sonar.jdbc.url=jdbc:postgresql://127.0.0.1/sonarqube
  4. 启动Sonar,直接执行D:\ProductionEnv\sonarqube-8.0\bin\windows-x86-64\StartSonar.bat启动服务。
  5. 访问 http://xxxxxxx:9000 进入Sonar,用户名密码默认为admin/admin

创建bat脚本执行启动

set "SONAR_HOME=D:\ProductionEnv\sonarqube-8.0"
rem set "JAVA_HOME=D:\ProductionEnv\Java\jdk-13.0.1"
rem set PATH=%PATH%;%SONAR_HOME%\bin;%JAVA_HOME%\bin

set JAVA_HOME=D:\ProductionEnv\Java\jdk-11.0.5
set PATH=%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin
set CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

rem java -version

start %SONAR_HOME%\bin\windows-x86-64\StartSonar.bat

配置LDAP集成

  1. 收集LDAP产品版本、服务地址、用于绑定的账号、密码等。
  2. 编辑sonar.properties,将如下内容填入(笔者使用的是OpenLdap,不同产品部分值可能不一样)。
    #admin
    sonar.security.realm=LDAP
    ldap.url=ldap://localhost:389
    ldap.bindDn=cn=Manager,dc=tansun,dc=com
    ldap.bindPassword=password
    #users
    ldap.user.baseDn=ou=Uniform Reporting Platform,dc=tansun,dc=com
    ldap.user.request=(&(objectClass=inetOrgPerson)(uid={login}))
    ldap.user.realNameAttribute=cn
    ldap.user.emailAttribute=mail
  3. 重启验证。

数据库连接报错

尝试使用MySQL数据库时,报错如下,这是因为sonarqube-7.9之后就不在支持MySql,笔者使用的是PostgreSQL。

wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
jvm 1    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
jvm 1    |
jvm 1    |
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
wrapper  | <-- Wrapper Stopped
请按任意键继续. . .
欣赏此文?求鼓励,求支持!您的支持就是支持我更新的最大动力!