戴老师的博客 - 代码质量
type: channel
link: https://www.tushu.info/tag/%E4%BB%A3%E7%A0%81%E8%B4%A8%E9%87%8F/
items: 使用 Sonar 进行代码质量管理

使用 Sonar 进行代码质量管理
type: item
date: 2026-07-09T04:28:30+00:00
description: Sonar 概述Sonar 是一个用于代码质量管理的开放平台。通过插件机制，Sonar 可以集成不同的测试工具、代码分析工具以及持续集成工具。与持续集成工具（例如 Hudson/Jenkins 等）不同，Sonar 并不是简单地把不同的代码检查工具结果（例如 FindBugs、PMD 等）直接显示在 Web 页面上，而是通过不同的插件对这些结果进行再加工处理，通过量化的方式度量代码质量的变化。从而可以方便地对不同规模和种类的工程进行代码质量管理。在对其他工具的支持方面，Sonar 不仅提供了对 IDE 的支持，可以在 Eclipse 和 IntelliJ IDEA 这些工具里联机查看结果；同时 Sonar 还对大量的持续集成工具提供了接口支持，可以很方便地在持续集成中使用 Sonar。此外，Sonar 的插件还可以对 Java 以外的其他编程语言提供支持，对国际化以及报告文档化也有良好的支持。Sonar 的安装Sonar 是 Codehaus 上面的一个开源项目，使用的是 LGPL V3 软件许可。我们可以在其官方网站上下载其源代码及安装包。其源代码需要使用分布式版本控制软件 Git 进行检出（Check Out），命令行方式如下：git clone git://github.com/SonarSource/sonar.git本文主要介绍 Sonar 的使用方法，只需要到 Sonar 网站 下载最近的发行包即可，本文写作时最新的版本为 2.11。下载 zip 包后，直接解压到任意目录。由于 Sonar 自带了 Jetty 6 的应用服务器环境，所以不需要额外的安装就可以使用。值得一提的是，Sonar 也支持部署在 Apache Tomcat 应用服务器中。在 Windows 环境中，直接启动 Sonar 的 bin 目录下 windows-x86-64\StartSonar.bat 即可。然后在浏览器中访问：http://localhost:9000/图 1. Sonar 访问界面这样就成功安装并启动了 Sonar，但其中没有安装插件，需要用户下载并安装自己所需要的插件。本节以 Quality Index Plugin 为例，介绍如何下载及安装 Sonar 插件。首先访问 Sonar 主页中 Dashboard > Sonar > Documentation > Sonar Plugin Library 路径。图 2. Sonar 插件的下载进入 Quality Index 插件，点击下载路径。图 3. Quality Index Plugin 下载然后将下载的 sonar-quality-index-plugin-1.1.3.jar 文件放到 sonar-2.11\extensions\plugins 路径下。重启 Sonar，该插件就在 Sonar 的平台上运行并开始工作。数据库设置Sonar 默认使用的是 Derby 数据库，但这个数据库一般用于评估版本或者测试用途。商用及对数据库要求较高时，建议使用其他数据库。Sonar 可以支持大多数主流关系型数据库（例如 Microsoft SQL Server, MySQL, Oracle, PostgreSQL 等）。本文以 MySQL 为例说明如何更改 Sonar 的数据库设置：在 MySQL 中创建 sonar 用户CREATE USER sonar IDENTIFIED BY 'sonar'; GRANT ALL PRIVILEGES ON *.* TO 'sonar'@'localhost' \ IDENTIFIED BY 'sonar' WITH GRANT OPTION;将 MySQL 的驱动文件（如 mysql-connector-java-5.1.13.jar）拷贝到 sonar-2.11\extensions\jdbc-driver\mysql 目录。修改 sonar-2.11\conf\sonar.properties 文件，用 # 注释原来 Derby 的配置项，并打开 MySQL 数据库的配置项：# Comment the following lines to deactivate the default embedded database. #sonar.jdbc.url: jdbc:derby://localhost:1527/sonar;create=true #sonar.jdbc.driverClassName: org.apache.derby.jdbc.ClientDriver #sonar.jdbc.validationQuery: values(1.html) ～～～～～～～～～～～～～～～省略部分～～～～～～～～～～～～～～～～～～ …