zoukankan      html  css  js  c++  java
  • SonarQube 系列之 — 01 安装和扫描

    一、sonar简介

    SonarQube(简称Sonar)是管理代码质量的开放平台,它可以快速地对代码质量进行分析,并给出合理的解决方案,提高管理效率,保证代码质量。支持Java, Python, C#, JavaScript, PHP, VB.NET, TypeScript, Flex等等二十几种编程语言的代码质量管理与检测。 SonarQube可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题。官网文档

    • a. Web 服务器
    • b. 基于 Elasticsearch 的搜索服务器
    • c. 计算引擎服务器负责处理代码分析报告并保存在 SonarQube 数据库

    Sonar Scanners:是用于将项目发布到Sonar进行审查的工具。也可以不用该工具。官网

    SonarLint:是Eclipse,IDEA中的Sonar插件


    SonarQube工作流程如上图:

    1. 开发人员在本地使用 SonarLint 运行分析 IDEs 上的代码;
    2. 开发者将自己的代码上传到持续集成服务器上,例如:git,SVN,TFVC,……;
    3. 持续集成服务器触发自动构建,SonarQube 扫描仪执行代码分析;
    4. 分析报告发送到 SonarQube 服务器进行处理;
    5. SonarQube 服务器分析和存储分析报告结果到 SonarQube 数据库中,并显示结果在 UI 界面中;
    6. 开发人员通过修改、评审代码来管理和减少他们 SonarQube UI 页面上的问题;
    7. 项目经理收到分析报告
      运维使用 api 来从 SonarQube 自动化配置和提取数据
      运维使用 JMX 监控 SonarQube 服务器

    二、部署安装

    1. 环境准备

    1. jdk 1.8版本

    2. sonarqube 7.6 downloads

    3. SonarQube+Scanner downloads

    4. 数据库,Sonarqube支持Mysql、PostgreSQL,SqlServer、Oracle等,选择合适的数据库,创建相应sonar库,设置用户名、密码,设置用utf-8编码

    2. 安装包解压,并修改配置文件

    将安装包上传到服务器,并且解压到/data目录下:

    #cd /data
    #unzip sonarqube-7.6.zip -d /data/sonarqube
    #cd /data/sonarqube/sonarqube-7.6/conf
    #vi sonar.properties
    

    修改:数据库配置,以及数据库用户名,密码,这里用的数据库是PostgreSQL,具体内容如下

    3. 启动Sonar,并验证

    chmod -R 755 /data/sonarqube/sonarqube-7.6/
    cd /data/sonarqube/sonarqube-7.6/bin/linux-x86-64
    ./sonar.sh start
    
    #如果未完成启动可以使用console命令查看启动过程中的问题
    ./sonar.sh console
    #sonar支持的启动参数: console | start | stop | restart | status | dump
    
    #如果启动完成,但是依然不能访问,可以通过以下命令查看启动日志
    cat $SONAR_HOME/logs/web.log
    

    浏览器访问:http://localhost:9000(管理员:admin,密码:admin)。如访问失败,则可以在 ../logs/sonar.log 文件中查看日志。

    4. 常用插件安装,汉化包Plugin Library

    1. 常用插件
      Chinese Pack -- 中文语言包,有兼容列表说明,这里是:sonar-l10n-zh-plugin-1.26.jar
      JaCoCo -- Java 代码覆盖率
      PMD -- Java 静态代码扫描
      Checkstyle -- Java 代码规范检查
      Crowd -- Crowd 插件,实现统一登录
      ShellCheck Analyzer -- Shell 代码规范检查
      SonarCSS、SonarHTML、SonarJS等 -- Sonar 针对不同编程语言代码分析

    可百度云下载,链接:https://pan.baidu.com/s/1LhI_aoL0ZBXFAeVTBOqVDQ ,提取码:wlzj

    1. 放入sonar如下目录: sonarqube-7.6extensionsplugins

    2. 然后重启sonar就可以了。

    其他补充

    安装服务
    如果是windows机器,可以打开 StartSonar.bat 文件所在目录,运行文件 InstallNTService.bat 将Sonar安装为服务

    三、SonarQube的扫描

    官网可以看到,SonarQube支持以下方式来进行项目的扫描;

    1. 直接使用SonarQube scanner即扫描仪来进行分析

    如果本地未搭建开发环境,此时使用SonarQube scanner就很方便

    1. 修改配置文件
      在sonar-scanner.properties中配置对应的sonar.host.url 、sonar.sourceEncoding

    2. 修改环境变量
      export SCAN_HOME=/data/sonarqube/sonar-scanner
      export PATH=$PATH:$SCAN_HOME/bin

    3. 修改项目配置文件
      在项目根路径下创建sonar-project.properties、配置信息如下:

    sonar.projectKey=sonarScannerTest      
    sonar.projectName=sonarScannerTest
    sonar.version=1.0
    sonar.sources=src
    sonar.binaries=bin
    sonar.language=java
    sonar.sourceEncoding=UTF-8
    
    1. 执行和查看
      在项目根目录下执行命令,执行sonar-scanner/sonar-scanner -X命令
      执行成功的话,访问SonarQube查看项目扫描结果。

    2. 使用SonarQube扫描仪分析Maven

    1. 找到位置 $MAVEN_HOME/conf下的settings.xml,添加如下配置:
    <settings>
        <pluginGroups>
            <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
        </pluginGroups>
        <profiles>
            <profile>
                <id>sonar</id>
                <activation>
                    <activeByDefault>true</activeByDefault>
                </activation>
                <properties>
                    <!-- Optional URL to server. Default value is http://localhost:9000 -->
                    <sonar.host.url>http://loaclhost:9000</sonar.host.url>
    		<!-- 具有执行分析权限的用户名和密码 -->
    		<sonar.login>analysis</sonar.login>
    		<sonar.password>123456</sonar.password>
                </properties>
            </profile>
         </profiles>
    </settings>
    

    注意:直接加进去会报错,将<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>添加到文件原有的<pluginGroups></pluginGroups>中,将 到</profile>的内容添加到文件原有的<profiles></profiles>中

    1. 运行编辑器的命令窗口,在项目根目录下执行:
      mvn clean verify sonar:sonar
      或者
      mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar -Dsonar.scm.provider=git

    2. 执行成功的话,访问SonarQube查看项目扫描结果。

    遇到报错:SCM provider autodetection failed. Both svn and git claim to support this project. Please use sonar.scm.provider to define SCM of your project.
    在命令中添加参数 -Dsonar.scm.provider=git就好啦~

    3. 使用SonarQube扫描仪分析ant

    1. 下载sonarqube-antjar包,放到ant的/lib目录下,在项目的build.xml中添加一个 sonar Ant target:
    <!-- build.xml -->
    <project name="My Project" default="all" basedir="." xmlns:sonar="antlib:org.sonar.ant">
    ...
      
    <!-- Define the SonarQube global properties (the most usual way is to pass these properties via the command line) -->
    <property name="sonar.host.url" value="http://localhost:9000" />
    <!-- Define the SonarQube project properties -->
    <property name="sonar.projectKey" value="org.sonarqube:sonarqube-scanner-ant" />
    <property name="sonar.projectName" value="Example of SonarScanner for Ant Usage" />
    <property name="sonar.projectVersion" value="1.0" />
    <property name="sonar.sources" value="src" />
    <property name="sonar.java.binaries" value="build" />
    <property name="sonar.java.libraries" value="lib/*.jar" />
    ...
     
    <!-- Define SonarScanner for Ant Target -->
    <target name="sonar">
        <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
            <!-- Update the following line, or put the "sonarqube-ant-task-*.jar" file in your "$HOME/.ant/lib" folder -->
            <classpath path="path/to/sonar/ant/task/lib/sonarqube-ant-task-*.jar" />
        </taskdef>
     
        <!-- Execute SonarScanner for Ant Analysis -->
        <sonar:sonar />
    </target>
    
    1. 在项目根目录下执行如下命令
      ant sonar

    2. 执行成功的话,访问SonarQube查看项目扫描结果。

    4. 其他类型

    使用SonarQube扫描仪分析Gradle
    使用SonarQube扫描仪分析MSBuild
    使用SonarQube扫描仪分析Azure DevOps
    没用过,待补充

    5. Eclipse+ SonarLint插件(连接到SonarQube平台)

    1. 打开Eclipse,选择Help->Eclipse Marketplace,在Find里面输入SonarQube,点击install
    2. 在SonarQube平台新建项目
    3. 在项目上右键—> Run as—>Run configuration—>Maven Build 下面新建 sonar:sonar
  • 相关阅读:
    关于OPC自动化接口编程(OPCDAAuto.dll)几点注意问题
    OPCDAAuto.dll的C#使用方法浅析(转载)
    微软系统工具包Sysinternals Suite官方下载地址
    C#的dll被其他程序调用时,获取此dll正确的物理路径
    根据存储过程,查询此过程的参数和参数数据类型讯息
    sql server中类似oracle中decode功能的函数
    c# HttpWebResponse 调用WebApi
    MariaDB10.4以上版本安装
    Windows server 2012 显示“我的电脑”
    Debian 9 启动后进入命令行
  • 原文地址:https://www.cnblogs.com/liuyitan/p/13157042.html
Copyright © 2011-2022 走看看