`
DigitalSonic
  • 浏览: 216090 次
社区版块
存档分类
最新评论

初试Sonar

阅读更多

前阵子玩了玩持续集成,从CruiseControl 换到了Hudson ,写了篇关于Hudson的入门 ,最近看到同事在用Sonar ,又正好在InfoQ上看到了介绍Sonar的设计架构度量功能的文章 ,于是也尝试了下对自己的项目代码进行扫描(可惜扫描的结果有点杯具:-()。

 

Sonar is an open platform to manage code quality . As such, it covers the 7 axes of code quality: Architecture & Design, Duplications, Unit tests, Complexity, Potential bugs, Coding rules, Comments.
 

下面简单讲讲如何配置一个可用的Sonar环境,快速开展代码度量。

1、准备环境

JDK 1.5+,这个就不说了。

 

Maven 2.0.9+,Sonar通过Maven Plugin来检查代码,这个建议装最新的,因为低版本的Maven中有些Bug会影响Sonar的使用,例如MNG-4001 ,会报找不到Plugin。

 

MySQL 5.x+,Sonar需要一个数据库来存储结果,Sonar自带了Derby,但在实际使用时还是用MySQL、PostgreSQL这样的数据库比较靠谱,Sonar还支持Oracle和MS SQLServer。

2、准备数据库

这里我使用了MySQL来存储分析结果,所以执行以下脚本:

 

CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
grant all privileges on sonar.* to 'sonar'@'localhost' identified by '你的密码';
flush privileges;

3、配置Sonar

下载最新的Sonar发行版,解压到一个目录里,修改conf/sonar.properties文件,根据你的数据库配置进行调整:

 

sonar.jdbc.url: jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
sonar.jdbc.driver: com.mysql.jdbc.Driver
sonar.jdbc.validationQuery: select 1
sonar.jdbc.user: sonar
sonar.jdbc.password: 你的密码

4、部署到Tomcat

Sonar有两种运行模式,一个使用自带的服务器 启动,选择bin目录下相应的系统脚本就可以启动了,然后访问http://localhost:9000

 

第二种就是部署到独立的AppServer 里,例如Tomcat。

  • 根据步骤3,修改conf/sonar.properties中的数据库配置
  • 执行war目录里的build-war脚本生成war文件
  • 将war文件部署到应用服务器中

Sonar对内存要求比较高,一般的默认配置满足不了需求,所以需要定制一下Tomcat里的相应参数:

 

-Xms1024m -Xmx1024m -XX:MaxPermSize=256m
 

启动服务器后,访问http://localhost:8080/sonar 就能看到界面了。

5、快速执行代码度量

根据Sonar的文档,需要配置settings.xml才能使用mvn sonar:sonar命令,这太麻烦了,可以直接使用下面的命令:

mvn install -Dmaven.test.skip=true

mvn test org.codehaus.sonar:sonar-maven-plugin:1.8:sonar -Dmaven.test.failure.ignore=true -Dsonar.jdbc.driver=com.mysql.jdbc.Driver "-Dsonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8" -Dsonar.jdbc.username=sonar -Dsonar.jdbc.password=<你的密码> -Dsonar.host.url=http://localhost:8080/sonar

如果需要远程操作,需要对MySQL的权限进行一些配置,如果有防火墙,记得打开3306端口:

 

grant all on sonar.* to 'sonar'@'%' identified by '<你的密码>';
flush privileges;

同样,由于Sonar对内存要求较高,在执行Maven前,最好配置下MAVEN_OPTS,加大内存:

-Xmx512m -XX:MaxPermSize=256m

如果在运行mvn命令时发生JAVA无法打开新进程的情况,很有可能是Windows下命令行超过最大字数限制了(要引用很多jar文件,默认的repo路径比较长),这时可以考虑修改Maven的settings.xml文件,自定义一个Repository存放路径,例如:D:/mvn_repo。

 

这时,假设远程服务器地址为192.168.1.2,Sonar的地址为http://192.168.1.2:8080/sonar,则执行的命令为:

mvn install -Dmaven.test.skip=true

mvn test org.codehaus.sonar:sonar-maven-plugin:1.8:sonar -Dmaven.test.failure.ignore=true -Dsonar.jdbc.driver=com.mysql.jdbc.Driver "-Dsonar.jdbc.url=jdbc:mysql://192.168.1.2:3306/sonar?useUnicode=true&characterEncoding=utf8" -Dsonar.jdbc.username=sonar -Dsonar.jdbc.password=<你的密码> -Dsonar.host.url=http://192.168.1.2:8080/sonar

6、Hudson集成

Sonar还可以通过插件与Hudson进行集成,在每次构建结束后触发Sonar。

 

首先,应该在Hudson的插件管理中添加Hudson Sonar Plugin;然后,在系统设置里,增加一个Sonar的Installation;最后,在项目的Post-build actions里,勾选Sonar,在项目构建完成后,会自动执行Sonar的任务。

 

不过Hudson集成中运行Sonar任务,可能需要参考Sonar的文档对Maven配置进行相应修改。

参考文档:

  1. Sonar: Install Sonar (http://docs.codehaus.org/display/SONAR/Install+Sonar )
  2. Sonar: Collect data (http://docs.codehaus.org/display/SONAR/Collect+data )
  3. Hudson: Sonar Plugin (http://wiki.hudson-ci.org/display/HUDSON/Sonar+Plugin )
分享到:
评论
1 楼 jelver 2010-06-29  
灰常不错,最近也在整这玩意,共同学习

相关推荐

    sonar eclipse插件sonarlint

    sonar eclipse插件sonarlint,原先的插件已经被启用,这是最新的,如果连接本地sonar服务器,需要在eclipse.ini中配置启动参数,参数为org.sonarlint.eclipse.core/server_url 值为sonar服务器地址,如果不配置默认...

    【中文版】sonar实战

    ### Sonar实战:从入门到进阶 #### 知识点概述 Sonar是一个功能强大的代码质量管理平台,专为软件开发团队设计,旨在帮助他们监控、管理和改进代码质量。Sonar不仅提供了静态代码分析,还涵盖了动态分析(如单元...

    Sonarlint中文使用手册

    SonarLint是一款代码检测插件,它能够集成到Eclipse和IntelliJ IDEA这类的集成开发环境(IDE)中,帮助开发者实时地在IDE上检测代码中的问题。SonarLint可以检测多种编程语言,如Java、JavaScript、PHP和Python等,...

    sonar runner 进行代码质量监控

    ### Sonar Runner 进行代码质量监控 #### 一、Sonar环境搭建 为了实现代码的质量监控,首先需要搭建Sonar环境。以下是详细的步骤: 1. **安装JDK-1.5以上版本**:Sonar需要Java环境支持,因此首先要确保安装了JDK...

    fisher_Sonar数据集_fisher_sonar_fishersonar_分类_数据集sonar_源码

    《Fisher Sonar数据集与线性判别分析在分类中的应用》 Fisher Sonar数据集,全称为fisher_sonar或fishersonar,是机器学习领域中一个广泛使用的分类问题实例,主要应用于训练和测试算法的性能。这个数据集源自声纳...

    SonarLint4.0.0.zip

    SonarLint是一款强大的静态代码分析工具,用于检测代码中的潜在问题和缺陷,它可以在编码阶段就帮助开发者发现并修复代码的不良实践。SonarLint 4.0.0是该工具的一个版本,针对IntelliJ IDEA(简称Idea)提供了一个...

    Sonar-runner Sonar代码扫描辅助工具sonarScanner

    sonar4版本扫描辅助程序. 向服务器上传代码并做扫描分析. 使用方式: CMD切换到项目根目录下(sonar-project.properties文件所在目录)运行 sonar-runner

    java代码集成sonar接口,实现sonar操作的demo

    利用java代码,调用sonar接口,实现在sonar里面创建,更改,用户,组,权限等一系列操作

    sonarlint-3.6.0.zip

    SonarLint是一款强大的静态代码分析工具,用于在开发过程中实时检测代码质量问题。它与SonarQube服务器相结合,可以提供更全面的代码质量管理。这款插件适用于多种集成开发环境(IDE),包括Eclipse。"sonarlint-...

    sonar使用教程

    sonar使用教程涵盖了在Linux环境下搭建SonarQube环境的详细步骤。SonarQube是一个开源平台,用于持续检测代码质量,支持多种编程语言。在本教程中,主要讲述了如何在具有CentOS 7.0操作系统的Linux环境下进行...

    IntelliJ IDEA-SonarLint 离线傻瓜式安装

    SonarLint原生集成在IntelliJ IDEA中,但有时可能会遇到与其它插件如`scalint`的兼容性问题,因此,本篇将介绍如何进行SonarLint的离线傻瓜式安装。 首先,由于在线安装SonarLint时可能会遇到版本不匹配或验证失败...

    sonar汉化包等插件

    "sonar汉化包"是针对SonarQube的中文语言包,使得用户界面更加友好,方便中国开发者使用。本文将详细介绍SonarQube以及与汉化相关的插件。 首先,SonarQube的核心功能包括静态代码分析、代码复杂度计算、代码覆盖率...

    sonar中文插件1.28

    "sonar中文插件1.28"是专门为SonarQube设计的一个本地化插件,目的是为了提供中文界面和支持,便于中国开发者更加便捷地使用SonarQube进行项目分析和质量管理。 这个插件的版本号是1.28,表明它是针对SonarQube某个...

    sonar.rar_mat数据处理_mat数据集_sonar data_sonar dataset_sonar.mat

    《MATLAB格式的Sonar数据集详解及其在机器学习中的应用》 Sonar数据集,一个广泛用于机器学习和模式识别研究的经典数据集,已经处理为.mat格式,方便了研究者进行快速的数据加载和分析。这个数据集包含了60个特征,...

    sonar 和sonarscanner的linux安装包

    1. 解压`sonar-scanner-cli-3.0.3.778-linux.zip`,这将包含可执行文件`bin/sonar-scanner`。 2. 将解压后的目录添加到系统的PATH环境变量中,以便在任何地方都能执行`sonar-scanner`命令。 3. 可选:自定义分析配置...

    sonar-scanner连接sonarquebe7的sonar.java.binaries问题的解决方案

    本文主要探讨的是当SonarScanner在连接SonarQube 7版本时遇到`sonar.java.binaries`问题的解决方案。 首先,问题的起因是由于SonarQube的Java插件版本升级导致的。在4.12版本之后,SonarQube要求用户明确指定`sonar...

    SonarLint for Visual Studio 2019、2022

    内含两个版本[SonarLint for Visual Studio 2019、SonarLint for Visual Studio 2022](适用于VS2019、VS2022两个版本,非此版本的不适配勿下载):SonarLint 是一个免费的开源IDE 扩展,可识别并帮助您在编写代码时...

    sonar与maven的集成使用说明

    ### Sonar与Maven的集成使用说明 #### 一、Sonar简介与本地环境搭建 Sonar是一款开源的代码质量管理工具,它支持多种语言,并且能够帮助开发团队进行持续的代码质量检查。Sonar可以自动地对源代码进行分析,提供...

    IDEA sonarlint插件,版本 4.13.0.24781

    **SonarLint插件在IDEA中的应用与详解** SonarLint是一款强大的代码质量检查工具,它可以在开发过程中实时提供代码审查建议,帮助开发者尽早发现并修复潜在的问题。这款插件与IntelliJ IDEA(以下简称IDEA)集成,...

    sonar7.8.zip

    sonar-gitlab-plugin-4.0.0.jar sonar-l10n-zh-plugin-1.28.jar sonar-pmd-plugin-3.2.0-SNAPSHOT.jar sonar-scanner-cli-4.0.0.1744-linux.zip sonarqube-7.8.zip

Global site tag (gtag.js) - Google Analytics