Sonar codereview平台配置搭建

(http://www.tuicool.com/sites/vQZRB3)
原文 http://blog.csdn.net/u011340807/article/details/20614467
主题 Java

Sonar代码分析实战(6)——1.2.2 Sonar Runner执行代码分析 使用Sonar做代码分析时,有很多种途径,但是推荐使用Sonar Runner。
本节描述基于Sonar Runner 2.0+
如有不懂,mailto : zhe-jiang.he@hp.com.
前提准备
你必须提前下载,并安装Sonar Runner。下载:
http://repository.codehaus.org/org/codehaus/sonar-plugins/sonar-runner/2.0/sonar-runner-2.0.zip
安装配置请参考前面章节中
简单工程
在项目根路径下,创建配置文件,文件名为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)
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
配置好上述文件后,从命令行在根路径下执行下面命令启动项目的代码分析。
sonar-runner
为了帮助新手尽快入门,github存取服务上存放简单的示例代码,可供浏览和下载。
多模块工程
在Sonar分析时可以使用两种方式配置项目的结构。一种需要在项目下配置一个总文件,一种可以在每个模块下各自配置一个文件。
方式一:
将所有的配置放在一个 sonar-project.properties 文件,并放在项目的根路径下。
文件内容示意:
# 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
方式二:
每个模块下的配置放在各自的独立文件中。
配置示意:
总配置的内容 "MyProject/sonar-project.properties"
# 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
子配置一 "MyProject/module1/sonar-project.properties"
# Redefine properties
# Note that you do not need to prefix the property here
sonar.projectName=Module 1
子配置二 "MyProject/module2/sonar-project.properties"
# Redefine properties
# Note that you do not need to prefix the property here
sonar.projectName=Module 2
值得注意:
1、子配置继承于父配置,子配置将可以覆盖父配置,通过两种方法:
在父配置中配置属性前增加模块标识前缀。
在子配置中直接定义配置。
2、特殊情况可以指定根目录
默认情况下,模块的根目录默认为模块的标识符(如上面的示例)。特殊情况下,可以在配置文件中使用“sonar.projectBaseDir”属性来指定根目录。如:
module1.sonar.projectBaseDir=My Module One #含空格
module1.sonar.projectBaseDir=modules/mod1 #多层级
module2.sonar.projectBaseDir=modules/mod2
**3、多模块项目使用Sonar做分析时不能只指定一个源代码目录。 **
为了帮助尽快入门,这里依然有部分示意代码。你可以浏览和下载。
4、相同结构的多模块 projects/languages/java/sonar-runner/java-sonar-runner-modules-same-structure
5、不同结构的多模块 projects/languages/java/sonar-runner/java-sonar-runner-modules-different-structures
6、模块独自配置 projects/languages/java/sonar-runner/java-sonar-runner-modules-own-configuration-file
多模块多语言功能
从Sonar3.3开始,Sonar支持多语言多模块工程的代码分析。
而配置也极其简单,只需在多模块工程的基础上增加一个语言属性的配置,如:
module.sonar.language
module1.sonar.language=java
module2.sonar.language=javascript
为了帮助尽快入门,这里依然有部分示意代码。你可以浏览和下载。项目路径:
projects/languages/multi-language/multi-language-java-javascript-sonar-runner
高级用法
如果不在项目的工程的根路径创建sonar-project.properties文件,还可以进行其他选择。
1、通过command命令行直接指定:
sonar-runner -Dsonar.projectKey=myproject -Dsonar.sources=src1 ..
2、通过command命令行指定配置文件路径: 'project.settings'
sonar-runner -Dproject.settings=../myproject.properties
通过设置'sonar.working.directory'属性可以设置Sonar的工作目录,默认为'.sonar'
通过设置'project.home'属性可以指定项目的根路径。根路径下必须包含sonar-project.properties配置文件(除非执行指令时显示给定路径。)
命令行执行分析时,可以追加参数。参数。
疑难解答
对于较大的工程项目,经常出现内存不够的问题,需要设置虚拟机的内存。
export SONAR_RUNNER_OPTS="-Xmx512m -XX:MaxPermSize=128m"
在Window环境下:
set SONAR_RUNNER_OPTS=-Xmx512m -XX:MaxPermSize=128m
从Sonar Runner 1.X向2.0迁移
只需将以下属性名替换为新属性名即可:
sources => sonar.sources
tests => sonar.tests
binaries => sonar.binaries
libraries => sonar.libraries
在sonar-project.properties文件明确设置sonar.sourceEncoding属性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139
  • 新晋测试小白最近在研究sonarqube的静态代码检查,整理了关于sonarqube 如何在mac os x系统下...
    测试小白_stone阅读 1,913评论 0 1
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,732评论 6 342
  • 【题记】谁的青春不迷茫,曾经有一份美好来过心中,自此后鸟语花香一路芬芳。 雪落走进教室,看见别的同学都在各自忙着,...
    5号陶子阅读 629评论 0 0
  • “现在觉得特别爱这个世界。能被一个人照亮全世界这种鬼话竟然是真的”。 朋友发给我这句话的时候,我哈哈大笑,回了个鬼...
    京城浮世荟阅读 390评论 0 1