zoukankan      html  css  js  c++  java
  • SonarQube 的安装、配置及 Maven 项目的使用

    转载自:https://cloud.tencent.com/developer/article/1010612

    1、SonarQube 介绍

    SonarQube 是一个用于管理源代码质量开放平台,它可以从多个维度检测代码质量,可以快速的定位代码中潜在的或者明显的 Bug、错误。它支持包括 Java、Python、Php、C/C++、C#、HTML、JavaScript、PL/SQL、Objective C 等二十多种编程语言的代码质量管理与检测。可作为我们日常开发中检测代码质量的重要工具。

    2、环境、软件准备

    本次演示环境,我是在本地机器 Mac 上操作,以下是安装的软件及版本:

    1. SonarQube:version 6.5
    2. Jdk:version 1.8.0_91
    3. Maven:version 3.3.9
    4. Mysql: version 5.7.15

    注意:下边我们要演示 Maven 项目如何使用 SonarQube 分析,所以需要先安装 Maven、Jdk,SonarQube 安装我们使用 Mysql 作为数据存储,所以需要先安装 Mysql,这里 Maven、Jdk、Mysql 的安装忽略。

    3、SonarQube 安装

    SonarQube 安装很简单,只需去官网下载最新版 zip 安装包到本地,解压执行即可。我解压到本地后的目录为/Applications/soft/sonarqube-6.5,解压目录结构如下:

    img

    这里简单说下每个目录作用:

    • bin 用来启动 SonarQube 服务,这里已经提供好了不同系统启动 | 停止脚本了,目前提供了 linux-x86-32、linux-x86-64、macosx-universal-64、windows-x86-32、windows-x86-64
    • conf 用来存放配置文件,若需要修改配置,修改 sonar.properties 文件即可。
    • data 用来存放数据,SonarQube默认使用 h2 数据库存储,同时支持其他如Mysql、Orace、Mssql、Postgresql数据库存储。
    • extensions 用来存放插件 jar 包,以后我们需要安装插件就放在这里。
    • lib 用来存放各种所依赖的 jar 包,包括上边各数据库驱动包 (默认已提供一个版本,如果版本不匹配,则在这里手动更新下)。
    • logs 用来存放各日志信息
    • web 用来提供 SonarQube web 网页服务。

    本机 Mac 环境启动 | 停止 | 重启 | 查看状态 SonarQube 服务命令:<install_dir>/bin/macosx-universal-64/sonar.sh start | stop | restart | status。成功启动后,访问本地 http://localhost:9000,SonarQube 初始管理员账号为 admin,默认密码为 admin,登录后可修改密码。

    img

    SonarQube 默认服务端口为 9000,默认数据库为 h2,这些都是可以修改配置的,我们只需要修改<install_dir>/conf/sonar.properties文件即可。以修改配置 Mysql 数据库为例:

    1、修改 sonar.properties
    sonar.jdbc.username=sonar
    sonar.jdbc.password=sonar
    sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
    
    2、本地 Mysql 创建数据库
    CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
    
    3、本地 Mysql 创建用户并分配权限
    CREATE USER 'sonar' IDENTIFIED BY 'sonar';
    GRANT ALL PRIVILEGES ON *.* TO 'sonar'@'%' IDENTIFIED BY 'sonar' WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON *.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    

    修改完成后,重启服务即可,我们会发现SonarQube已经帮我们在本地 Mysql 数据库 sonar 中创建好了所需各表。

    img

    4、Plugins 插件安装

    SonarQube 插件安装非常简单,同时 官网插件库 提供了很多实用的插件供大家下载使用。SonarQube已经默认给我们安装了一些很常用的插件,我们可以通过admin登录,点击 配置 -> 系统 -> 更新中心 -> Installed 查看。 这里我们演示安装两个很实用的插件,一个是 Chinese Pack(SonarQube的汉化包),一个是 Checkstyle(检测代码风格)。

    4.1 Chinese Pack 插件安装

    SonarQube 网页的汉化包,安装完该插件后,Web 页面大部分都翻译成中文了,是不是一下子就简介明了啦!首先下载插件 sonar-l10n-zh,源码托管在 github 上,我们需要先 clone 到本地,执行 maven 编译得到 jar 包,然后复制到sonarQube插件目录,最后重启服务即可安装完成。 (注意:README上的兼容列表,我本地 SonarQube 版本6.5,所以下载插件对应版本是1.17。)

    git clone https://github.com/SonarQubeCommunity/sonar-l10n-zh.git
    cd sonar-l10n-zh
    mvn install
    cp target/sonar-l10n-zh-plugin-1.17-SNAPSHOT.jar <install_dir>/extensions/plugins
    <install_dir>/bin/macosx-universal-64/sonar.sh restart 
    

    img

    4.2 Checkstyle 插件安装

    上边 Chinese Pack 插件安装时通过直接将 jar 包放到插件目录完成安装,我们也可以在 SonarQube 网页上直接点击安装。admin 登录,点击 配置 -> 系统 -> 更新中心 -> Available -> Search,输入 CheckStyle,在搜素结果中找到 CheckStyle 插件点击 Install,等待下载完成后,按照页面提示点击 Restart 自动重启服务即可完成安装。

    img

    admin登录,点击 配置 -> 系统 -> 更新中心 -> Installed 列表中可以看到我们刚刚安装的两个插件了。

    img

    SonarQube 支持分析的语言有很多,像Java、Python、Php、C/C++、C#、HTML、JavaScript、PL/SQL、Objective C等20+语言,当我们需要支持分析什么语言时,只需要去插件中心安装对应语言的插件即可,非常方便,可扩展性强。

    5、使用 SonarQube 分析 Maven 项目

    下面我们以一个 Java Maven 项目 mavenDemo 为例,看下如何配置,以及 SonarQube 分析结果查看。注意:这里有个兼容性选择问题,如果 SonarQube >= 4.5,那么 maven-sonar-plugin >= 2.7,如果 SonarQube < 4.5,那么 maven-sonar-plugin = 2.6;如果 Maven >= 3.0,那么maven-sonar-plugin >= 3.1,如果 Maven < 3.0,那么 maven-sonar-plugin = 3.0.2。

    首先,我们需要配置 Maven 的 setting.xml文件,增加 sonarQube 配置。

    <settings>
        <pluginGroups>
            <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
        </pluginGroups>
        <profiles>
            <profile>
                <id>sonar</id>
                <activation>
                    <activeByDefault>true</activeByDefault>
                </activation>
                <properties>
                    <!-- 配置 Sonar Host地址,默认:http://localhost:9000 -->
                    <sonar.host.url>
                      http://myserver:9000
                    </sonar.host.url>
                </properties>
            </profile>
         </profiles>
    </settings>
    

    然后就可以在我们 Maven 工程目录执行 mvn clean verify sonar:sonarmvn clean install sonar:sonar

    如果我们想指定使用某个版本的 sonar-maven-plugin 插件,比如 3.3.0.603 版本,可以有两种方式:

    一、修改 pom.xml 文件
    
    <build>
      <plugins>
        <plugin>
          <groupId>org.sonarsource.scanner.maven</groupId>
          <artifactId>sonar-maven-plugin</artifactId>
          <version>3.3.0.603</version>
        </plugin>
      </plugins>
    </build>
    
    二、使用 mvn 命令指定
    
    mvn clean install org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar
    

    执行完毕之后,可以去 web页面查看分析结果。

    img

    img

    这里我们只演示了一个简单的 Maven 项目使用 SonarQube 分析代码质量,SonarQube 功能还有很多,像代码规则、质量配置、质量阈值配置、项目权限配置等等,有时间在慢慢研究下吧。

    参考资料

  • 相关阅读:
    python 基础2.5 循环中continue与breake用法
    python 基础 2.4 while 循环
    python 基础 2.3 for 循环
    python 基础 2.2 if流程控制(二)
    python 基础 2.1 if 流程控制(一)
    python 基础 1.6 python 帮助信息及数据类型间相互转换
    python 基础 1.5 python数据类型(四)--字典常用方法示例
    Tornado Web 框架
    LinkCode 第k个排列
    LeetCode 46. Permutations
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13724584.html
Copyright © 2011-2022 走看看