logo资料库

Sonar实战(代码审查工具).pdf

第1页 / 共88页
第2页 / 共88页
第3页 / 共88页
第4页 / 共88页
第5页 / 共88页
第6页 / 共88页
第7页 / 共88页
第8页 / 共88页
资料共88页,剩余部分请下载后查看
Sonar实战 从入门到进阶
文档说明
神器Sonar
新手上路
Sonar安装
环境要求
安装Sonar
数据库安装
安装Sonar应用
1、配置数据库
2、启动Sonar Server
3、高级属性
安装客户端
Sonar客户端
安装配置Sonnar Runner
安装过程
安装配置Maven分析客户端
Maven相关配置
安装配置Ant客户端
持续集成CI
代码分析
分析范围
使用Sonar Runner(推荐)
前提准备
简单工程
多模块工程
多模块多语言功能
高级用法
疑难解答
从Sonar Runner 1.X向2.0迁移
使用Maven客户端
前提准备
分析Maven工程
推荐的方法
替代方法
配置Sonar分析
Maven插件版本
分析多模块多语言项目
使用Sonar Ant Task
前提准备
使用方法
简单工程
多模块工程
多模块多语言工程
高级用法
用JaCoCo Ant Task运行单元测试
注意
从Sonar Ant Task 1.X 到Sonar Ant Task 2.0
持续集成
Hudson / Jenkins
Atlassian Bamboo
Apache Continuum 1.2
CruiseControl
Jetbrains TeamCity
分析参数
强制参数
Sonar应用服务
数据库
项目配置
可选参数
项目配置
单元测试和集成测试
Sonar配置
日志
浏览Sonar
页面布局
顶栏
左栏菜单
内容页
下钻子页面
示例1: 下钻访问“违规”子页面
示例2:下钻访问“重复”页面
快速访问喜欢
本地化
仪表盘
概览
创建仪表盘
自定义仪表盘
改变布局
添加视图组件
自定义组件
移动组件
移除组件
管理仪表盘
管理默认仪表盘
项目仪表盘
Sonar发布时的默认项目仪表盘
重复率
坏复杂度分布
依赖设计
单元测试缺陷
违规
注释率
事件
树映射&依赖矩阵
导航服务
指标下钻导航
违规下钻导航
云导航
组件
全局仪表盘
概述
Sonar默认全局仪表盘
指标搜索
搜索
可用的条件
搜索结果显示配置
过滤器
保存搜索条件为过滤器
显示指标过滤器
管理指标过滤器
资源详情页面
主代码资源视图
源代码
测试覆盖
违规
重复
依赖
LCOM4-缺乏凝聚度量
测试代码资源视图
源代码
测试情况
违规
质量趋势
项目比较
新手进阶
历史信息
时光机
时光轴组件
历史表组件
默认仪表盘
趋势
什么是趋势?
如何阅读趋势?
趋势如何得出的?
历史管理
数据清理
删除无用的数据
删除不要的分析
差异视图
差异视图
指标差异视图
违规差异视图
覆盖率差异视图
差异视图配置
全局配置
项目级配置
违规和评审
创建评审
标识违规不解决
重开评审
搜索评审
创建人工违规
改变违规等级
创建活动计划
将Review加入活动计划
将Review加入外部任务管理器
小组件
通知
插件库
语言支持类
开发工具类
集成类
管理类
可视化/报告
额外度量
本地化
在Eclipse中使用Sonar
在Eclipse中配置Sonar
配置Sonar Servers
关联项目到Sonar Servers
首次关联
改变关联
解除项目关联
使用Mylyn插件管理Reviews
创建Sonar任务仓库
创建过滤
在Eclipse中浏览Sonar
本地和远程模式
远程模式
本地模式
模式间切换
Sonar Eclipse视图
维度视图(远程和本地)
违规视图(远程和本地)
热点视图(远程)
网页视图(远程)
在Eclipse中使用Sonar
处理违规
修复违规
创建review(远程)
处理Reviews
提交代码前审查
执行本地分析
Sonar相关概念
Sonar架构
质量概念
操作界面
Java度量指标
代码规模
测试指标
代码重复度
设计
复杂度
内置规则
配置管理(SCM)
后续
《Sonar 实战·从入门到进阶》 作者:张晓松 Headsen Headsen@163.com Sonar 实战·从入门到进阶 本文档由 Headsen 于 2012-12 月翻译,2013 年 01 月整理发布。 文档说明 鉴于 Sonar 的重要性,而且一直没有一分较为全面的中文文档,笔者制作本 文档。本文档的主要内容由官方文档翻译而来,同时结合笔者的应用实践,对部 分文档进行增删调整,同时引入了笔者的一些应用实例,以便更加具备可读性。 本文文档通篇由 headsen 翻译,用于 Sonar 爱好者交流使用。请勿用于任何 商业目的。 本文档的任何问题,请联系我: headsen@163.com http://weibo.com/headsen 官方英文文档地址:http://docs.codehaus.org/display/SONAR/Documentation 神器 Sonar 随着产品规模的越来越大,产品维护的时间越来越长,代码质量的问题日趋 凸显,后续的维护和扩展之痛,非亲历者无法体会。这时候,迫切需要一个全面 的代码质量管理平台,来解决发现、管理、解决之前的、现在的质量问题,使产 品能够轻装前进。 我从 Sonar2 系列开始接触 Sonar,一接触便开始着迷。从 Sonar3 系列开始, 我就知道我再也无法拒绝她。 Sonar是神器,围绕代码质量管理的神器。她几乎支持了你所能想到的一切代 码质量问题:从静态分析到动态分析(单元测试)、从系统分析到人工评审、从 历史分析到现在的版本分析、从Web客户端到Eclipse插件、从本地分析到远程分 析、从集成其他代码分析插件(FindBugs、PMD等)到作为插件被CI持续集成、 从邮件通信到任务平台交换(如JIRA)、从Web接口到插件开发,这些不一而足, 再加上Sonar的开源特征、神一般的操作界面,没有人可以拒绝她的美丽。
《Sonar 实战·从入门到进阶》 作者:张晓松 Headsen Headsen@163.com 1. 新手上路 1.1. Sonar 安装 1.1.1. 环境要求 Sonar 代码分析工具是以 Java Web 应用的形式发布的。搭建 Sonar 代码分析环境需要 相应的硬件、JDK、数据库、WEB 服务器的要求。相关要求如下:  硬件要求: 内存 Sonar web 应用需要至少 500Mb 内存 项目越大、使用周期越长,Sonar占用的磁盘空间越大。参考:1300 万行的项目,持续 磁盘空间 分析四年,占用 10G磁盘空间。参考项目Nemo  软件要求 Java 平台 Oracle JDK 1.5、6、7 支持 IBM JDK GCJ 不支持 不支持 Oracle JRockit 不支持 数据库 Apache Derby Sonar 3.2 之前版本支持。 Derby 和 Sonar 绑定发布的。尽管 Derby 数据库支持 Sonar 的全部功能,(升级不支 持)。因此 Sonar 建议使用企业级数据库,而非 Derby。 H2 同 Derby 数据库一样。绑定发布,但是不建议使用。 Microsoft SQL 支持 2005 版本,使用 jTDS 驱动。不支持微软驱动。精简版本支持。 Server 不支持 2008 版本。但是有用户成功使用。 MySQL Oracle PostgreSQL 应用服务器 Jetty 6 必须指定区分大小写,指定区分重音。 支持 5.X 和 6.X。 支持 Oracle10G、11G 和试用精简版。 驱动 ojdbc14.jar 不支持,只支持 thin 模式,不支持 OCI。 支持 8.3、8.4、9.0、9.1 和 Sonar 绑定。 Apache Tomcat 支持 5.5、6.0、7.0 JBoss GlassFish 浏览器 IE Firefox Chrome 不支持 不支持。 支持 IE7+ 所有版本。 近期稳定版本,12 版本测试通过。
《Sonar 实战·从入门到进阶》 作者:张晓松 Headsen Headsen@163.com Opera Safari 未经测试 近期稳定版本 1.1.2. 安装 Sonar 作为一个代码分析平台,Sonar 由以下三部分构成:  一个数据库:存放配置信息和分析结果信息;  一个 WEB 服务器:发布应用,在线浏览、配置分析;  一个客户端:执行源代码分析。 1.1.2.1. 数据库安装 在环境要求部分,已经罗列了 Sonar 支持的数据库类型。 如果只是做一个测试或 Demo,你可以使用 Sonar 附带的 H2 或 Derby。它们不需要任何 安装。 如果使用其他数据,仅仅需要创建一个数据库或表空间,提供 Sonar 增删改查的数据库 权限的帐号。表和索引将在 Sonar 第一次运行时创建。 笔者推荐使用 MySQL 数据库,推荐使用数据库编码为 UTF-8。 1.1.2.2. 安装 Sonar 应用 下载 Sonar 发布包,解压到本地磁盘路径下。 http://www.sonarsource.org/downloads/ 1、配置数据库 一般我们不使用 Sonar 自带的内建数据库,因此数据更改 Sonar 发布程序的数据源。 在 Sonar 解压包下,编辑 conf/sonar.properties 文件,可以指定新的特定数据。该文 件中所有注释掉的数据库连接模板都是支持的。只需要去除注释,更改为自己的数据库连接 即可。同时将默认的自带数据库的链接注释掉。 一般需要配置以下属性 • • • • sonar.jdbc.url: 数据库连接地址 sonar.jdbc.driver: 驱动类 sonar.jdbc.user: 数据库用户名 sonar.jdbc.password: 密码 如果使用 Oracle 数据库,将 JDBCDriver 包,放在/extensions/jdbc-driver/oracle/. 下。其他数据库的驱动包已经放在默认的路径下。
《Sonar 实战·从入门到进阶》 作者:张晓松 Headsen Headsen@163.com 2、启动 Sonar Server Sonar 应用默认监听 9000 端口。通过 http://localhost:9000 访问 可以在 conf/sonar.properties 文件更改: sonar.web.host : 192.0.0.1 sonar.web.port: 80 sonar.web.context: /sonar 执行下面脚本可以启动 Sonar 应用: 在 Linux/Mac OS: bin//sonar.sh start 在 Windows: bin/windows-x86-32/StartSonar.bat 对于其他平台,参考 Installing on AIX, HPUX or Solaris 启动 Sonar 应用,后就可以通过浏览器访问 Sonar 的浏览页面了。这是内容是空的。 3、高级属性 在上面的建议安装中,注意:这样使用的 Sonar 的内置 Web 服务器。你可以将 Sonar 发布在其他服务器,如 Tomcat 上。 你还可以在 Windows 和 Linux 配置 Sonar 服务;你还可以通过代理运行 Sonar。后续 专 门的章节讲述这些高级特性。 1.1.2.3. 安装客户端 除了数据库和 Web 应用外,Sonar 还有很重要的一部分客户端程序。客户端程序用于对 具体的程序工具进行分析,不同的语言,不要的项目构建类型可以使用不同的客户端程序。 Sonar 提供很多类型的客户端,可以根据项目构建类型选择最佳方案: Sonar Runner: 推荐默认客户端,如果你不知道选择哪个分析你的项目就是使用它把。. Maven: 如果项目 Maven 构建则推荐使用对于的 Maven 插件包; Ant Task:如果项目 Ant 构建则推荐;. CI Engine: 持续集成,请参考相关文档,笔者暂时不做翻译。文档地址Hudson/Jenkins plugin 或 Bamboo plugin 或AnthillPro plugin. 注意:即便没有对应的插件,其他CI引擎也可使 用。     在对应的详细章节中,将重点讲述各类型客户端的使用。
《Sonar 实战·从入门到进阶》 作者:张晓松 Headsen Headsen@163.com 1.1.3. Sonar 客户端 Sonar 的安装难点之一就在于各种客户端的选择、配置和集成等。本文档将次章节作为 “安装 Sonar”的并行章节阐述。 1.1.3.1. 安装配置 Sonnar Runner Sonar Runner 是最常用的分析客户端之一,可以对绝大多数类型的项目进行分析。 下载地址:下载目录。现在的版本是sonar-runner-2.0.zip 安装要求:JDK1.5 或更高。 安装过程 1、将下载包解压到一个本地路径下。 2、将解压路径设置为环境变量:SONAR_RUNNER_HOME 3、更改配置文件:$SONAR_RUNNER_HOME/conf/sonar-runner.properties。 主要是数据源的配置,sonar-runner 会将分析的结果存放在数据库中。如下面所示,只 需将注释的模板适当位置去掉注释并更改为自己对应的 Sonar 配置即可。 #----- Default Sonar server #sonar.host.url=http://localhost:9000 #----- PostgreSQL #sonar.jdbc.url=jdbc:postgresql://localhost/sonar #sonar.jdbc.driver=org.postgresql.Driver #----- MySQL #sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8 #sonar.jdbc.driver=com.mysql.jdbc.Driver #----- Oracle #sonar.jdbc.url=jdbc:oracle:thin:@localhost/XE #sonar.jdbc.driver=oracle.jdbc.driver.OracleDriver #----- Global database settings #sonar.jdbc.username=sonar #sonar.jdbc.password=sonar #----- Default directory layout #sonar.sources=src/main/java #sonar.tests=src/test/java
《Sonar 实战·从入门到进阶》 作者:张晓松 Headsen Headsen@163.com #sonar.binaries=target/classes 4、将$SONAR_RUNNER_HOME/bin 添加到 Path 环境变量中。 5、可以通过 Shell 或命令行检查安装情况,输入'sonar-runner.bat -h'(Linux 输入 'sonar-runner -h'),将会得到以下信息: usage: sonar-runner [options] Options: -h,--help Display help information -X,--debug Produce execution debug output -D,--define Define property 要获得更多的信息,命令增加参数-Dsonar.verbose=true 即可。 使用 SonarRunner 执行 Sonar 具体分析请参考相关章节。 1.1.3.2. 安装配置 Maven 分析客户端 支持Maven 2.0.10, 2.1.x, 2.2.x or 3.x。若没有安装Maven,请下载 Maven。 Maven 相关配置 由于基于 Maven 进行分析时,需要使用 Maven 的插件指令处罚 Sonar 分析,所以需要 对 Maven 的全局配置进行修改。 编辑 setting.xml: 将以下配置放在对于的 XML 节点,同时将相关配置更改为自己配置。 sonar true jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8 com.mysql.jdbc.Driver sonar sonar
《Sonar 实战·从入门到进阶》 作者:张晓松 Headsen Headsen@163.com http://myserver:9000 使用 Maven 插件分析大型项目时,常常会出现内存不足 OutOfMemoryError。这时需要 更改 Maven 的默认内存: export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=128m" Window 下,export 改为 set 即可。 使用 Maven 插件客户端执行 Sonar 具体分析请参考相关章节。 1.1.3.3. 安装配置 Ant 客户端 首先下载 Sonar Ant Task 包: http://repository.codehaus.org/org/codehaus/sonar-plugins/sonar-ant-task/2.0/sonar-ant-task-2.0.jar 特点: Sonar Ant Task 允许将 Sonar 分析放在 Ant 的 build 脚本中。 要求: Ant 1.7.1+、Java 1.5+ 安装: 下载 Sonar Ant Task 即可。 使用 Ant Task 执行 Sonar 具体分析请参考相关章节。 1.1.3.4. 持续集成 CI 暂时不做翻译。请参考英文文档。 Page: Installing on AIX, HPUX or Solaris Page: Deploying Sonar on JEE Server Page: Running Sonar as a Service on Windows Page: Running Sonar as a Service on Linux Page: Running Sonar behind a Proxy 1.2. 代码分析 安装完 Sonar 环境后,就可以执行 Sonar 分析项目工程了。
《Sonar 实战·从入门到进阶》 作者:张晓松 Headsen Headsen@163.com 1.2.1. 分析范围 Sonar 支持对 18 种编程语言进行分析。分析的结果是主要指标的衡量和代码规则的遵 循情况。但是分析结果依据不同被分析的语言,会有很大不同。 (1) 对所有语言,Sonar 对源代码执行静态分析; (2) Sonar 可以静态分析编译代码,比如 Java 的 Class 文件、C#的 dll 文件等; (3) 对应特定语言,Sonar 能够执行动态分析,比如 Java、C#的单元测试。 执行分析 首先你应该部署好需要分析的功能,在开发和发布的项目工程。为了执行 Sonar 代码分 析,需要部署 Sonar 的分析客户端。在 Sonar 安装一节中已经提到各种类型分析客户端的安 装配置。 1.2.2. 使用 Sonar Runner(推荐) 使用 Sonar 做代码分析时,有很多种途径,但是推荐使用 Sonar Runner。 本节描述基于 Sonar Runner 2.0+ 1.2.2.1. 前提准备 你必须提前下载,并安装 Sonar Runner。下载: http://repository.codehaus.org/org/codehaus/sonar-plugins/sonar-runner/2.0/sonar-runner -2.0.zip 安装配置请参考前面章节中 1.2.2.2. 简单工程 在项目根路径下,创建配置文件,文件名为 sonar-project.properties。sonar-runner 执行 分析时,会读取该文件。 文件内容示意: sonar-project.properties # required metadata sonar.projectKey=my:project sonar.projectName=My project sonar.projectVersion=1.0 # path to source directories (required) sonar.sources=srcDir1,srcDir2 # path to test source directories (optional)
分享到:
收藏