1. Sonar简介
Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量
通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测
2. Sonar的安装
作为一个代码分析平台,Sonar由以下三个部分组成:
数据库:存放配置信息和分析结果信息;
一个Web服务器:发布应用,在线浏览,配置分析;
一个客户端:执行源代码分析;
2.1 数据库
Sonar中内置了derby和H2数据库,不需要任何安装。但一般情况下我们不使用Sonar自带的内建数据库。
将SonarQube解压后,其中的conf/sonar.properties配置其数据库信息。,一般需要配置以下的属性:
属性 |
含义 |
sonar.jdbc.url |
数据库连接地址 |
sonar.jdbc.driver |
数据库驱动类 |
sonar.jdbc.user |
数据库用户名 |
sonar.jdbc.password |
数据库密码 |
2.2 Web服务器
如何启动sonar?在SonarQube的bin目录下对应各种平台的启动方式,这样就会默认启动Sonar内置的web服务器,启动完成后,通过http://localhost:9000访问。
可以在conf/sonar.properties文件中修改一些web服务的相关信息,比如sonar.web.host,port和context。
建议将Sonar安装到单独的web服务器中,比如tomcat,安装的方式为:
运行SONAR中war目录下的build-war.bat, 执行完成后,会在本目录下生成一个名称为sonar.war的部署文件;将此war文件放置到对应的tomcat\webapps目录下,启动tomcat即可。
2.3 客户端
除了数据库和web服务器之外,Sonar还有很重要的一部分:客户端。客户端使用具体的程序工具进行分析,不同的语言,不同的项目构建类型可以使用不同的客户端程序。
Sonar提供很多类型的客户端:
客户端 |
说明 |
Sonar Runner |
推荐默认客户端 |
Maven |
如果项目使用Maven构建推荐使用此种方式 |
Ant |
如果项目使用ant构建则推荐 |
CI Engine |
持续集成,比如Hudson,Jenkins |
Sonar Runner
Sonar Runner是最常用的分析客户端之一,可以对绝大多数类型的项目进行分析,在SonarQube的下载页面中,同样可以下载到Sonar Runner,下载后的安装过程:
1. 解压下载包;
2. 将解压的路径设置成环境变量:SONAR_RUNNER_HOME;
3. 修改配置文件$SONAR_RUNNER_HOME/conf/sonar-runner.properties。
其中最主要是数据源的配置,sonar-runner会将分析的结果存放在数据库中,下图中就是配置Postgres的示例配置文件:
#Configure here general information about the environment, such as SonarQube DB details for example #No information about specific project should appear here #----- Default SonarQube server sonar.host.url=http://localhost:8888/sonar/ #----- PostgreSQL sonar.jdbc.url=jdbc:postgresql://localhost/sonar #----- MySQL #sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8 #----- Oracle #sonar.jdbc.url=jdbc:oracle:thin:@localhost/XE #----- Microsoft SQLServer #sonar.jdbc.url=jdbc:jtds:sqlserver://localhost/sonar;SelectMethod=Cursor #----- Global database settings sonar.jdbc.username=postgres sonar.jdbc.password=postgres #----- Default source code encoding sonar.sourceEncoding=UTF-8 #----- Security (when 'sonar.forceAuthentication' is set to 'true') #sonar.login=admin #sonar.password=admin
3. Sonar执行检查
在使用Sonar做代码分析时,有很多途径,但推荐使用sonar runner。
3.1 简单工程
将要进行项目分析的根路径下,创建配置文件,文件名为sonar-project.properties,sonar-runner执行分析时,会读取该文件,示例sonar-project.properties,其中配置了工程名称、版本、标识,对应的src路径,执行的测试用例,对应的bin文件夹和库信息,对应的编程语言等。
# 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) sonar.tests=testDir1,testDir2 # path to project binaries (optional), for example directory of Java bytecode sonar.binaries=binDir # optional comma-separated list of paths to libraries. Only path to JAR file and path to directory of classes are supported. sonar.libraries=path/to/library.jar,path/to/classes/dir # The value of the property must be the key of the language. sonar.language=cobol # Additional parameters sonar.my.property=value
3.2 多模块工程
如果是多模块工程,在Sonar分析时,可以使用两种方式配置项目的结构。一种需要在项目下配置一个总文件,一种可以在每个模块下各自配置一个文件。
项目下配置总文件
# Root project information sonar.projectKey=org.mycompany.myproject sonar.projectName=My Project sonar.projectVersion=1.0-SNAPSHOT # Some properties that will be inherited by the modules sonar.sources=src # List of the module identifiers sonar.modules=module1,module2 # Properties can obviously be overriden for # each module - just prefix them with the module ID module1.sonar.projectName=Module 1 module2.sonar.projectName=Module 2
各模块配置单独文件
此时,不仅需要有一个总配置,还需要在每个模块下都存在一个子配置。
总配置文件的内容如下:
# Root project information sonar.projectKey=org.mycompany.myproject sonar.projectName=My Project sonar.projectVersion=1.0-SNAPSHOT # Some properties that will be inherited by the modules sonar.sources=src # List of the module identifiers sonar.modules=module1,module2
子配置示例如下:
# Redefine properties # Note that you do not need to prefix the property here sonar.projectName=Module 1
相对于统一配置文件,这种方式显然更加灵活,子配置设置可以将父配置覆盖。
5. Sonar扩展
如果想要成为全局管理员,编写插件,扩展Sonar则需要首先了解Sonar的概念体系。
5.1 Sonar架构
Sonar中主要包括以下几个部分:
概念 |
定义 |
分析器 |
用于分析源代码计算代码快照的一组规则 |
客户端 |
执行分析器的调用模块 |
数据库 |
用于存放Sonar的配置规则和代码分析快照 |
服务器 |
访问用于浏览代码分析结果和在线配置的Web项 |
架构图如下:
5.2 Java度量指标
度量指标是Sonar的核心,熟练地使用Sonar意味着必须理解这些指标的概念和每个指标的计算规则。
Java指标分为几大类,主要包括:代码规模,单元测试,重复率,设计,复杂度,规则,配置管理SCM,如果安装额外的插件,指标可能更多。
5.3 扩展Sonar插件
可以先从其他人的插件代码下手,通过调试进行Sonar插件的研究。
比如在github上的相关示例插件项目,sonar-examples,其中对CheckStyle和PMD都有进行扩展,除了规则扩展,references-plugin中还对Sonar使用的界面进行了扩展,下面就以PMD中的插件为示例,说明一下扩展插件的基本方法和原则。
sonar-pmd-extension-plugin项目中执行mvn clean install,将构建出来的target文件夹下sonar-pmd-extension-plugin-0.1-SNAPSHOT.jar包拷贝至$SONAR_HOME\extensions\plugins目录,启动Sonar。
用sonar-runner客户端调用执行方式进行调试工作,此时需要配置sonar-runner的启动参数,set SONAR_RUNNER_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000,此时启动sonar-runner,就会等待远程连接,在eclipse或者intellij中将源码关联,设置其远程调试模式,就可以继续进行sonar-runner,并在相应的代码位置进行调试。
6. 常见问题
对于较大的工程项目,经常会出现内存不够的问题,需要重新设置sonar-runner的虚拟机内存,在sonar-runner.bat中:
Set SONAR_RUNNER_OPTS=-Xmx512m –XX:MaxPermSize=128m
相关推荐
结合具体项目告诉您什么是sonar以及如何使用sonar,可以学到很多。
sonar的环境要求,数据库配置,安装配置,汉化以及使用说明
Eclipse安装代码检测插件(SonarLint插件)安装使用说明,加强代码质量检测
sonar与maven的集成使用说明
Sonarlint是一款强大的代码检测插件,用户可以IDE上实时检测自己的代码问题。本文详细介绍了Eclipse和Idea集成Sonarlint的步骤和使用方法
一步步讲解sonar的使用方式,主要以在linux上搭建sonar环境为基础进行描述。
sonar-eclipse插件使用说明,怎么在eclipse中查看违规的情况。
在Windows环境安装sonarqube和sonar-runner的介绍说明,文档写的比较详细,方便初学者学习,如果安装过程中遇到什么问题欢迎留言咨询哦,大家一起学习进步
里面sonar的配置及常见问题进行了描述,相信我,对你有很大的帮助,
sonar安装使用及java规则详解:1 SonarQube安装及部署,sonar-scanner安装扫描,SonarLint插件动态检查,5 Sonar 代码检查规范
Sonar,Sonar+maven,Sonar+eclipse
sonar eclipse插件sonarlint,原先的插件已经被启用,这是最新的,如果连接本地sonar服务器,需要在eclipse.ini中配置启动参数,参数为org.sonarlint.eclipse.core/server_url 值为sonar服务器地址,如果不配置默认...
Sonar 是一个用于代码质量管理的开源平台,用于管理源代码的质量,通 过 Eclipse 插件形式,可以支持包括 java, C#, C/C++, PL/SQL, Cobol, JS, Groovy 等等二十几种编程语言的代码质量管理与检测。
NULL 博文链接:https://samjavaeye.iteye.com/blog/1947123
第一章、Sonar简介 2 第二章、Sonar原理 3 第三章、Sonarqube安装 5 3.1、下载安装包 5 3.2、 数据库连接方式 5 3.3、启动 7 3.4、插件引用 8 第四章、SonarQube Scanner安装 10 4.1、下载安装 10 4.2、数据库连接...
sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包
sonar,代码检查的好帮手,一行命令搞定,从此告别劣质代码
使用方法:下载完成后解压文件,里边有“SonarLint.VSIX-5.3.0.41207-2019.vsix”、“SonarLint.VSIX-6.9.0.54300-2022.vsix”,根据自己vs版本选择适配的版本,双击运行即可,按照提示安装完成即可。
sonar中文插件1.28,适用于最后一个jdk1.8版本的sonar,sonar-l10n-zh-plugin-1.28.jar
sonar安装及使用(1).pdf