前阵子玩了玩持续集成,从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配置进行相应修改。
参考文档:
- Sonar: Install Sonar (http://docs.codehaus.org/display/SONAR/Install+Sonar
)
- Sonar: Collect data (http://docs.codehaus.org/display/SONAR/Collect+data
)
- Hudson: Sonar Plugin (http://wiki.hudson-ci.org/display/HUDSON/Sonar+Plugin
)
分享到:
相关推荐
sonar eclipse插件sonarlint,原先的插件已经被启用,这是最新的,如果连接本地sonar服务器,需要在eclipse.ini中配置启动参数,参数为org.sonarlint.eclipse.core/server_url 值为sonar服务器地址,如果不配置默认...
sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包
利用java代码,调用sonar接口,实现在sonar里面创建,更改,用户,组,权限等一系列操作
sonar中文插件1.28,适用于最后一个jdk1.8版本的sonar,sonar-l10n-zh-plugin-1.28.jar
内含两个版本[SonarLint for Visual Studio 2019、SonarLint for Visual Studio 2022](适用于VS2019、VS2022两个版本,非此版本的不适配勿下载):SonarLint 是一个免费的开源IDE 扩展,可识别并帮助您在编写代码时...
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
Sonarlint是一款强大的代码检测插件,用户可以IDE上实时检测自己的代码问题。本文详细介绍了Eclipse和Idea集成Sonarlint的步骤和使用方法
sonar的checkStyle插件,直接下载放到sonar的插件文件夹就可以用了。
UCI的一个数据集Sonar,已经用MATLAB转化为.mat数据文件了,在MATLAB里面可以直接load
功能强悍的代码质量管理平台,中文版本说明,sonar入门篇
sonar-scanner-2.8
sonar汉化包完整版,从1.10到1.29共20个汉化jar包,sonar与汉化包有版本对应,版本对应关系可参照我的博客《Jenkins集成Sonar(2/3)登录并添加项目进行扫描+汉化》,将汉化包放到sonar的extensions/plugins目录下...
idea 安装sonarlint 无坑可用 操作步骤: 1、解压文件,将SonarLint文件夹复制到idea安装目录下的plugins下 2、重启idea 3、进入idea的setting,找到plugins,在里面勾选上SonarLint,应用确定 4、再次重启idea,...
sonar4版本扫描辅助程序. 向服务器上传代码并做扫描分析. 使用方式: CMD切换到项目根目录下(sonar-project.properties文件所在目录)运行 sonar-runner
sonar数据集,已处理成.mat格式,包括数据和类标,用于机器学习,聚类,分类等问题的研究
Sonar 是一个开源的质量管理平台,专注于从项目到类方法的持续的分析和测量技术质量,它把代码质量相关软件集成到一起统一管理
sonar3.2
sonar-findbugs-plugin.jar, sonar-findbugs-plugin.jar, sonar-findbugs-plugin.jar, sonar-findbugs-plugin.jar,
Environment: MATLAB algorithm: FCM function: classification of sonar data
根据sonar分析结果,获取圈复杂度和方法来计算最大平均圈复杂度。