美文网首页
了解sonarqube

了解sonarqube

作者: Sznag | 来源:发表于2021-09-14 23:06 被阅读0次

    一、sonar简介

    sonar是一款静态代码质量分析工具,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,而且能够集成在IDE、Jenkins、Git等服务中,方便随时查看代码质量分析报告;

    sonar通过配置的代码分析规则,从可靠性、安全性、可维护性、覆盖率、重复率等方面分析项目,风险等级从A~E划分为5个等级;

    (1) 不遵循代码标准

    (2) 潜在的缺陷 。

    (3) 糟糕的复杂度分布 。

    (4) 重复 。

    (5) 注释不足或者过多

    (6) 缺乏单元测试 。

    (7) 糟糕的设计

    同时,sonar可以集成pmd、findbugs、checkstyle等插件来扩展使用其他规则来检验代码质量;

    二、环境配置

    环境配置大致分为以几个步骤

    1.下载SonarQube server

    2.下载SonarScanner

    3.配置环境变量

    4.配置数据库

    5.下载Swift/OC的插件

    6.启动SonarQube server.

    重点说明

    安装不同版本的SonarQube有不同的要求。

    1.例如SonarQube 7.9之后数据库就不再支持MySQL了。所以按照本文安装要先看下你要安装SonarQube对应版本的要求。这个也是我一开始,安装最新版本SonarQube,数据库配置了MySQL,所以服务一直没有起来的原因。

    2.Sonar 7.9及更高版本需要JAVA 11。

    本次测试环境

    系统环境

    Mac OS 10.15.7

    必要条件

    运行SonarQube的唯一前提条件是在计算机上安装Java(Oracle JRE 11或OpenJDK 11),即JDK 11。

    数据库支持PostgreSQL(推荐)、Microsoft SQL ServerOracle

    1).安装JDK

    到Oracle官网-Java SE Downloads下载JDK 11(访问Oracle官网速度很慢,花钱买了个VPN,速度杠杠的~)

    安装成功后可以在/Library/Java/JavaVirtualMachines看到jdk-11.0.10.jdk

    再在终端上执行java --version,可以看到当前JDK版本信息

    2).安装PostgreSQL

    安装完成后,为了在终端使用psql命令,需要配置环境路径。

    终端执行打开~/.bash_profile

    添加export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/13/bin

    保存后终端执行source ~/.bash_profile使设置生效。

    现在可以在终端执行psql --version

    3).配置数据库

    首先使用postgres用户登录数据库

    psql postgres

    然后创建用户sonar并设置密码,这里的密码你可以填写自己的密码

    CREATE USER sonar WITH PASSWORD 'sonar';

    创建属于用户sonar的数据库sonar

    CREATE DATABASE sonar OWNER sonar;

    给sonar用户加上添加数据库的权限

    ALTER ROLE sonar CREATEDB;

    4).安装SonarQue

    下载并解压soarqube(https://www.sonarqube.org/downloads/)到任意位置,下面用$SONARQUBE-HOME表示sonarqube的目录位置。

    编辑$SONARQUBE-HOME/conf/sonar.properties以配置数据库设置:

    sonar.jdbc.url=jdbc:postgresql://localhost/sonarsonar.jdbc.username=sonarsonar.jdbc.password=sonar

    接下来cd到$SONARQUBE-HOME/bin/macosx-universal-64,执行以下命令来启动SonarQue:

    ./sonar.sh console

    SonarQube常用命令:

    ./sonar.sh console #Debug信息

    ./sonar.sh start #启动服务

    ./sonar.sh stop #停止服务

    ./sonar.sh restart #重启服务

    SonarQube启动成功,在浏览器打开http://localhost:9000,登录SonarQube,默认账号密码为admin,登录成功后会提示修改密码。

    5).下载Sonar-Scanner

    命令行下载:

    brew install sonar-scanner

    下载完成后,执行sonar-scanner --version查看版本信息.

    下载zip

    进入SonarScanner(https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/)选择 Mac OS X 64-bit下载zip并解压,需要将该目录下的bin目录加到系统的环境变量PATH中,以便在命令行中可以访问sonar-scanner命令。

    三.Sonar-Scanner 简单使用

    只需要在你的项目目录下执行如下命令(自行修改相关值):

    sonar-scanner \

    -Dsonar.projectKey=projectKey 

    -Dsonar.sources=.

    -Dsonar.host.url=http://localhost:9000

    -Dsonar.login=authenticationToken

    Sonar-Scanner 配置参数再使用

    1) 配置全局设置

    在SonarScanner的安装目录中找到/conf/sonar-scanner.properties,通过编辑更新全局设置:

    #----- Default SonarQube server

    #sonar.host.url=http://localhost:9000

    #----- Default source code encoding

    #sonar.sourceEncoding=UTF-8

    #----- 登录账号密码

    sonar.login=admin

    sonar.password=xxxx

    2) 配置项目参数

    在项目的根目录中创建一个配置文件,名为sonar-project.properties,配置项目设置(自行调整相关参数值):

    sonar.projectKey=CSSonarDemo#sonar.projectName=CSSonarDemosonar.projectVersion=1.0sonar.language=objcsonar.sources=CSSonarDemosonar.tests=CSSonarDemoTestssonar.projectDescription=测试SonarQube扫描的demosonar.login=xxxx

    其中sonar.login=xxxx需替换为你SonarQube后台创建项目时创建的令牌:

    3) 启动分析

    便可从项目目录运行以下命令以启动分析:

    sonar-scanner

    分析后的项目会自动出现在SonarQube服务器中

    关于iOS代码分析.

    1.下载Swift/OC的插件

    (https://github.com/Idean/sonar-swift/releases)

    将下载下来的backelite-sonar-swift-plugin-0.4.6.jar,放到SonarQube/extensions/plugins/目录下.

    2.安装其他工具

    1).安装OCLint(代码分析工具)

    brew tap oclint/formulaebrew install oclint

    2).安装xcpretty(增加xcodebuild输出的可读性)

    gem install xcpretty

    3).安装lizard(复杂度检测工具)

    sudo pip3 install lizard

    4).安装slather(用于生成覆盖率报告)

    sudo gem install slather

    3.SonarQube设置“质量配置”为OCLint

    在sonarqube网页上,点击项目-项目配置-质量配置-指定一个质量-OCLint-保存。

    4.接着重启SonarQube,使用sonar-scanner重新分析项目,完了再刷新SonarQube后台,可以看到刚分析的项目有了报告信息。

    5.关于OCLint的使用,在工程目录中新建run-sonar.sh编辑脚本如下:

    PROJECT_NAME="CSSonarDemo.xcworkspace"TARGET_NAME="CSSonarDemo"rm-rf sonar-reportsmkdir sonar-reportsrm-rf./build/derivedDataxcodebuild clean-UseModernBuildSystem=NOxcodebuild-workspace ${PROJECT_NAME}-scheme ${TARGET_NAME}-UseModernBuildSystem=NO-derivedDataPath./build/derivedData-configuration Debug COMPILER_INDEX_STORE_ENABLE=NO|xcpretty-r json-compilation-database-o compile_commands.jsonoclint-json-compilation-database-e Pods---report-typehtml-o oclintReport.htmloclint-json-compilation-database-e Pods---report-typepmd-o sonar-reports/oclint.xml \-max-priority-1=9999\-max-priority-2=9999\-max-priority-3=9999\/bin/sh sonar-scanner-X

    然后在工程目录中执行以下命令:

    sh run-sonar.sh

    5.Sonar结合OCLint展示分析结果

    在SonarQube后台,我们进入项目配置-设置,可以在左侧看到前面添加的插件Swift (Backelite),点击后可以右侧看到一些路径配置,OCLint的报告的相对路径(Path to OCLint pmd formatted report)为sonar-reports/*oclint.xml,我们在可以将OCLint分析报告放置在此路径中,SonarQube即可显示出分析结果。

    四.添加sonar的规则文件

    1.用管理帐号登录SonarQube平台

    2.从质量配置菜单进入配置页面新建:

    3.输入规则名称,选择语言,点击创建:

    4.创建完成:

    5.进入质量配置,找到你选择的语言:

    6.设置自己添件的规则文件:

    可以设置自己规则为默认规则,去激活自己想要的规则

    相关文章

      网友评论

          本文标题:了解sonarqube

          本文链接:https://www.haomeiwen.com/subject/rqnlgltx.html