了解sonarqube

2021-09-14  本文已影响0人  Sznag

一、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.设置自己添件的规则文件:

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

上一篇下一篇

猜你喜欢

热点阅读