如何在Hudson上集成sonar来实现代码质量控制

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

如何在Hudson上集成sonar来实现代码质量控制

Sonar是一款集成了PMD,checkstyle, FindBugs等代码质量管理功能的开源软件。 http://www.sonarsource.org/ 可以下载最新的版本。由于sonar是基于Maven 2实现构建的,所以你还需要从 http://maven.apache.org/download.html  下载Maven 2。把sonar和Maven 2解压缩,然后设置MAVEN_HOME以及PATH加$MAVEN_HOME/bin。可以执行mvn –version来检查Maven的安装是否正确。
Sonar的配置主要改为mysql来实现数据持久化。编辑SONAR_HOME/conf/sonar.properties文件,注释掉embedded database段(derby),取消注释MySQL。
Maven 2的配置从前一个版本升级后得到极大的简化,基本上可以看成3层结构,$MAVEN_HOME/settings.xml为全局配置,~/.m2/settings.xml为用户级配置,项目下pom.xml为项目级配置。为了sonar的运行我们需要在settings.xml配置两项,一个是LocalRepository,另一个是增加profile为sonar。Sonar的Profile举例如下(包含在profiles节点下, sonar server可以跟hudson server一致):
<profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <sonar.jdbc.url>                  jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8
                </sonar.jdbc.url>
                <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
                <sonar.jdbc.username>sonar</sonar.jdbc.username>
                <sonar.jdbc.password>sonar</sonar.jdbc.password>
                <sonar.host.url>http://SONAR_SERVER:9000</sonar.host.url>
            </properties>
        </profile>
 
以上基本完成了Sonar和Maven的安装和配置。接下来我们需要增加我们的管理对象开发项目了。因为我的Java项目是Web application,所以用如下命令创建:
mvn archetype:create -DgroupId=com.company.projectShortName -DartifactId=projectName -DarchetypeArtifactId=maven-archetype-webapp
Maven会在当前目录创建一个标准代码目录结构。
  1. projectName   
  2. |-- pom.xml   
  3. `-- src   
  4.     |-- main   
  5.     |   `-- java   
  6.     |   `-- webapp   
  7.     |       `-- WEB-INF   
  8.     |           `-- lib   
  9.     |           `-- web.xml   
  10.     `-- test   
  11.         `-- java   
删除projectName/src/main/java, projectName/src/main/webapp/WEB-INF/lib, projectName/src/test, 然后创建相同链接到你项目真实的java/src, WEB-INF/lib, java/test。
编辑projectName/pom.xml,在build标签下增加
<plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.5</source>
            <target>1.5</target>
            <encoding>UTF-8</encoding>
         <compilerArguments>
           <extdirs>src/main/webapp/WEB-INF/lib</extdirs>
         </compilerArguments>
        </configuration>
    </plugin>
</plugins>
以上插件为了解决Maven默认用1.3来编译导致大量泛型类无法通过编译的问题,强制用jdk 1.5即可支持泛型类。另外把webapp的组件jar目录设置好。
这样就完成了所有Sonar和Maven对项目的配置了。现在可以进入项目Maven目录,执行mvn sonar:sonar来分析代码了。
不过我们的目标是在hudson系统中集成sonar。所以我们还有几个步骤需要完成。
首先把hudson的sonar插件从http:// hudson-ci.org/download/plugins/sonar下载得到。添加到hudson服务器的$JBOSS_HOME/server/all/deploy/hudson.war/WEB-INF/plugins然后redeploy hudson即可。登陆hudson界面,在系统配置中针对sonar节增加sonar,配置server URL, database url, database login, database password, database driver跟Maven 2的settings.xml中sonar profile一致即可。勾选上“用户手工启动”。
然后在项目的配置页面里,勾选上Sonar,把Maven version, Root POM, MAVEN_OPTS配置好即可。其中Maven version为全局配置的版本,Root POM就是maven create的projectName/pom.xml(需要全路径,因为与hudson任务的工作空间不同),MAVEN_OPTS配置为-Xmx512m -XX:MaxPermSize=256m以防止内存错误。
喝杯茶,等着hudson的构建结果吧。你可以找到sonar的分析报告,关于重复代码,危险代码,混乱代码等都有哦。至于代码规则等,则需要你根据公司/项目的规范进行相应的增删了。

本文转自 dannyy1026 51CTO博客,原文链接:
http://blog.51cto.com/dannyyuan/404296
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
jenkins Devops 持续交付
【devops】七、集成Sonar Qube(下)
【devops】七、集成Sonar Qube(下)
|
6月前
|
安全 前端开发 Devops
【devops】七、集成Sonar Qube(上)
【devops】七、集成Sonar Qube(上)
135 0
|
2月前
|
安全 Java 测试技术
【开发工具专题_01】idea集成SonarLint代码质量管理
【开发工具专题_01】idea集成SonarLint代码质量管理
|
8月前
|
监控 NoSQL jenkins
2021-9-11大连东软实训---gitlab 、jenkins和sonar集成
2021-9-11大连东软实训---gitlab 、jenkins和sonar集成
66 0
|
Cloud Native 安全 jenkins
【云原生】DevOps(四):集成Sonar Qube
【云原生】DevOps(四):集成Sonar Qube
248 0
|
SQL 算法 Java
代码质量管理平台实战| SonarQube 安装、配置及 JaCoCo、Maven 集成
代码质量管理平台实战| SonarQube 安装、配置及 JaCoCo、Maven 集成
|
SQL Java 关系型数据库
代码质量管理平台实战| SonarQube 安装、配置及 JaCoCo、Maven 集成
![](https://ceshiren.com/uploads/default/original/3X/0/6/06250bd7e85b93784a37a6c492aa05bee2d77ef3.jpeg) SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。同时 SonarQube 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 SonarQube。
|
SQL Java 关系型数据库
代码质量管理平台实战| SonarQube 安装、配置及 JaCoCo、Maven 集成
![](https://ceshiren.com/uploads/default/original/3X/0/6/06250bd7e85b93784a37a6c492aa05bee2d77ef3.jpeg) SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。同时 SonarQube 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 SonarQube。
|
安全 Java jenkins
Jenkins Pipeline集成Sonar进行代码质量检测
Jenkins Pipeline集成Sonar进行代码质量检测 简介 jenkins pipeline Jenkins Pipeline (或简称为 "Pipeline" )是一套jenkins插件,将持续交付的实现和实施集成到 Jenkins 中。
|
安全 jenkins Java
Jenkins Pipeline集成Sonar进行代码质量检测
在devops理念中,CI/CD毫无疑问是最重要的一环,而代码质量检查则是CI中必不可少的一步。在敏捷开发的思想下,代码的迭代周期变短,交付速度提升,这个时候代码的质量就很难保证,测试只能保证功能完整与可用,而代码的质量纯靠review的话效率又很低,这个时候sonar就进入了我们的视野。
4802 0