1.  代码质量七宗罪

Sonar是一个代码质量管理系统。它的帮助文档开篇明义,提出了代码质量的七宗罪。总结的比較到位。最好还是一看:

1.        Bug和隐藏Bug(Bugs and Potential Bugs

2.        违反编码规范(Coding Standards Breach

3.        复制粘贴(Duplications

4.        缺乏单元測试(Lack of Unit Tests

5.        恶劣的复杂度分布(Bad Distribution of Complexity

6.        意大利面式设计(Spaghetti Design

7.        凝视不足或过多(Not Enough or Too Many Comments

2.  安装Sonarserver

首先看一下sonar对安装环境的需求,见文档:

http://docs.codehaus.org/display/SONAR/Requirements

2.1. 安装JRE

不再详述。

2.2. 安装数据库

Sonar支持MySQL、Oracle、PostgreSQL、SQL Server等多种数据库,本文选取MySQL。

參考文档:http://docs.codehaus.org/display/SONAR/Installing

2.3. 配置数据库

Sonar启动前须要数据库中有特定的username和数据库。下面为MySQL的配置脚本。

# https://github.com/SonarSource/sonar-examples/tree/master/scripts/database/mysql

#Create SonarQubedatabase and user.

#

# Command: mysql-u root-p
< create_database.sql

#

CREATE DATABASE sonarCHARACTER SET utf8COLLATE
utf8_general_ci;

CREATE USER'sonar' IDENTIFIED BY'sonar';

GRANT ALL ON sonar.* TO'sonar'@'%'
IDENTIFIED BY'sonar';

GRANT ALL ON sonar.* TO'sonar'@'localhost'
IDENTIFIED BY'sonar';

FLUSH PRIVILEGES;

2.4. 下载并配置sonar

本文下载的是SonarQube 3.7.4 LTS。不须要下载其它工具。

改动sonar-3.7.4/conf/sonar.properties文件里的sonar.jdbc.url、sonar.jdbc.username和sonar.jdbc.password属性,详细要參照前面mysqlserver的配置。

本文中设置的值是:

sonar.jdbc.username:                       sonar

sonar.jdbc.password:                       sonar

sonar.jdbc.url:   jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8

sonar.properties配置文件还能够设置其它项。比方HTTP监听port,临时保持默认。

2.5. 启动sonarserver

运行sonar-3.7.4/bin/文件夹下指定操作系统的脚本。启动sonar。

Sonar启动后:

(1)会连接mysqlserver,并在sonar数据库中建立相关的表格。

(2)启动一个httpserver,监听port为9000,当然这个port号是能够配置的。

当然,Sonar也能够作为服务安装到操作系统中,本文不再描写叙述。

2.6. 登录server

通过浏览器登录sonarserver,能够对sonar进行配置、安装插件等。

URL地址默认是http://{sonar_server_ip}:9000。

默认的username和password是admin/admin。

本文保持sonar的默认配置。

3.  利用maven向sonarserver提交分析任务

能够有多种方法向sonar提交分析任务,本文利用maven。注意sonar 3.7.4仅仅支持maven3.1版本号。

3.1. 改动maven的settings.xml文件。

參考文档:http://docs.codehaus.org/display/SONAR/Installing+and+Configuring+Maven

<profile>

<properties>

<sonar.jdbc.url>jdbc:mysql://192.168.150.11:3306/sonar?

useUnicode=true&amp;characterEncoding=utf8</sonar.jdbc.url>

<sonar.jdbc.username>sonar</sonar.jdbc.username>

<sonar.jdbc.password>sonar</sonar.jdbc.password>

<sonar.host.url>http://192.168.150.11:9000</sonar.host.url>

</properties>

</profile>

</profiles>

3.2. 改动pom.xml文件,以添加mysql驱动

<build>

<extensions>

<extension>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.24</version>

</extension>

</extensions>

</build>

3.3. 提交分析任务

參考文档:http://docs.codehaus.org/display/SONAR/Analyzing+with+Maven

运行下面maven命令:

mvn clean install

mvn sonar:sonar

注意sonar:sonar必须单独运行。

假设把sonar:sonar和其它target混在一起,比方mvn clean install sonar:sonar,可能导致不可预期的问题。

3.4. 查看分析结果

通过浏览器登录sonarserver,查看分析结果。

Java代码质量监控工具Sonar安装的更多相关文章

  1. 提高Java代码质量的Eclipse插件之Checkstyle的使用详解

    提高Java代码质量的Eclipse插件之Checkstyle的使用详解 CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具.它能够自动化代 ...

  2. 拔高你的Java代码质量吧:推荐使用枚举定义常量(转)

    提高你的Java代码质量吧:推荐使用枚举定义常量 一.分析 常量的声明是每一个项目中不可或缺的,在Java1.5之前,我们只有两种方式的声明:类常量和接口常量.不过,在1.5版之后有了改进,即新增了一 ...

  3. java代码如何在没有安装JDK的Windows下运行

    java代码如何在没有安装JDK的Windows下运行? 对于Java桌面应用来说,比较烦琐的就是安装部署问题,如:客户端是否安装有jre.jre版本.jre在哪里下载.如何用jre启动Java应用等 ...

  4. Linux下SonarQube代码质量平台的安装和使用方法

    Sonar简介: Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,Java ...

  5. 代码质量检测-Sonar

    一. Sonar简介 sonarqube系统是一个代码质量检测工具 由以下四个组件组成(https://docs.sonarqube.org/display/SONAR/Architecture+an ...

  6. 提高Java代码质量的Eclipse插件之Checkstyle的使用具体解释

    CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发者遵守某些编码规范的工具.它可以自己主动化代码规范检查过程.从而使得开发者从这项重要可是枯燥的任务中解脱出来. Ch ...

  7. 代码检查工具 Sonar 安装&使用

    本文主要说明Sonar的安装方式并附上依赖安装包,本文目标只实现本地搭建测试的Sonar环境,以及本地的测试项目的非定制化扫描 本机测试环境:Win10-X64,.vs2017      依赖包: 1 ...

  8. Java代码质量度量工具大阅兵

    FindBugs FindBugs, a program which uses static analysis to look for bugs in Java code. It is free so ...

  9. 推荐个Java代码质量检测的利器 —— FindBugs

    一.下载 插件的下载地址(sourceforge):FindBugs-Eclipse插件 二.安装 Eclipse插件的安装,就不多说了. 三.使用 1.找一个Project,选中它(也可以针对某个P ...

随机推荐

  1. ibatis 多种传参方式

    1,在公司项目yuda遇到的传入in语句,如果直接拼接in语句:in (....),sqlmap中使用#...#输出是不行的. 为需要使用: 第三种:in后面的数据确定,使用string传入      ...

  2. shell脚本中的set -e和set -o pipefail

    工作中经常在shell脚本中看到set的这两个用法,但就像生活中的很多事情,习惯导致忽视,直到出现问题才引起关注. 1. set -eset命令的-e参数,linux自带的说明如下:"Exi ...

  3. linux 学习笔记 显示压缩文件 gong.zip 的文件内容

    #zip -v gong zip zip info: xxx >删除压缩文件中俄smart.txt 文件 #zip -d gong.zip smart.txt deleting:smart.tx ...

  4. 网络篇:linux下select、poll、epoll之间的区别总结

    select.poll.epoll之间的区别总结 select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪 ...

  5. git rewinding head to replay your work on top of it...

    git fetch origin git reset --hard origin/<branch>

  6. 潭州课堂25班:Ph201805201 爬虫高级 第十三 课 代理池爬虫检测部分 (课堂笔记)

    1,通过爬虫获取代理 ip ,要从多个网站获取,每个网站的前几页2,获取到代理后,开进程,一个继续解析,一个检测代理是否有用 ,引入队列数据共享3,Queue 中存放的是所有的代理,我们要分离出可用的 ...

  7. [CC-MINXOR]XOR Minimization

    [CC-MINXOR]XOR Minimization 题目大意: 有一个长度为\(n\)的数列\(A_{1\sim n}\).\(q\)次操作,操作包含以下两种: 询问\(A_{l\sim r}\) ...

  8. CodeForce VKcup C 树形dp

    题意: 给出一棵树,一个人可以在树上跳,每次最多跳k(1≤k≤5)个点定义f(s,t)为从顶点ss跳到顶点tt最少需要跳多少次求∑(s<t)f(s,t) 链接: 点我 dp[i][j]表示以i点 ...

  9. C++程序设计方法3:禁止自动类型转换

    禁止自动类型转换 explicit #include <iostream> using namespace std; class Src;//前置类型声明,因为在Dst中要用到Src的类 ...

  10. Yii2 数据库sql查询

    Yii2.0 对数据库 查询的一些简单的操作 User::find()->all(); //返回所有数据: User::findOne($id); //返回 主键 id=1 的一条数据(举个例子 ...