接触sonar已经有段时间了,最早是在一个项目组里面听到这个框架,后来在公司持续集成活动的推动下,也逐渐学习了sonar的具体功能。sonar集成了findbugs,pmd,checkstyle各种静态代码检查工具的功能,并且可以将各种扫描结果组合成一张张漂亮的报告,功能很是强大。下面介绍一下如何使用sonar来自定义javascrpit的扫描规则。

虽然使用过很多次sonar,但都是在别人搭好的环境上使用的,自己还没有真正搭建过,这里首先介绍一下sonar环境的搭建。

sonar环境搭建

首先到sonar官网上下载其最新版本,我下的是3.5.1。下下来是一个zip包,直接将其解压到你想要安装的目录就好了。

使用H2内存数据库

sonar服务的启动是要有数据库来支持的,sonar本身自带了H2内存数据库,可以直接使用。在解压目录下的conf目录下,有一个sonar.properties的配置文件是来保存sonar的配置,如果你使用的是H2数据库的话,将配置文件中的下面部分代码注释去掉即可。

sonar.properties
1
2
#sonar.jdbc.url:                            jdbc:h2:tcp://localhost:9092/sonar
#sonar.jdbc.driverClassName: org.h2.Driver

在解压目录下的extras\database\mysql目录,有2个mysql的sql文件,其中1个是创建sonar数据库和用户的脚本,可以参照这个脚本来创建H2的sonar相关数据库和用户。

使用外部数据库(以mysql为例)

sonar官网强烈建议,如果你的产品只是学习或者练习用的demo,可以使用内存数据库,否则请使用外部数据库。sonar支持大部分主流的数据库,比如mysql,oracle,postgresql,Microsoft SQLServer。

我们以mysql为例,首先安装mysql(安装mysql的过程就不再详细描述,网上有很多),这里要注意将数据库的字符集设置为UTF-8。安装完成之后,同样修改conf目录下的sonar.properties文件,将mysql部分的配置项打开。然后在mysql中将上面提到的那个创建sonar数据库和用户脚本施行一遍。

sonar.properties
1
2
3
#----- MySQL 5.x
# Comment the embedded database and uncomment the following line to use MySQL
#sonar.jdbc.url: jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true

启动服务

数据库配置完成之后,就可以来启动web服务了,去到解压目录下的bin目录,找到自己相关系统的目录,以64位windows系统为例,目录为:bin\windows-x86-64,运行该目录下的Startsonar.bat文件,如果启动没有报错的话,就可以在浏览器中输入:http://localhost:9000,查看sonar的主界面了。

安装Sonar Runner

上面搭建的只是sonar的服务平台,如果想用sonar来分析自己项目代码的话,可以有多种方式,比如ant、maven等,而sonar官网上推荐的是使用Sonar Runner来执行分析项目的操作。

首先去到sonar官网下载Sonar Runner的压缩包,和sonar的压缩包一样,先解压到你要安装的目录。然后增加SONAR_RUNNER_HOME这个环境变量,变量值为你runner的解压目录,然后将$SONAR_RUNNER_HOME$/bin的加到PATH变量后面(配置过java环境变量的同学都懂的)。这样就安装完成了,打开cmd验证一下,打出sonar-runner -h,如果出现下面的提示信息,即表示你的runner安装成功了。

1
2
3
4
5
6
usage: sonar-runner [options]

Options:
-h,--help Display help information
-X,--debug Produce execution debug output
-D,--define <arg> Define property

安装完runner以后,在你的项目根目录下,增加sonar-project.properties文件,内容如下:

sonar.properties
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# required metadata
sonar.projectKey=my:project
sonar.projectName=My project
sonar.projectVersion=1.0 # optional description
sonar.projectDescription=Fake description # 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 is supported.
sonar.libraries=path/to/library/*.jar,path/to/specific/library/myLibrary.jar,parent/*/*.jar # The value of the property must be the key of the language.
sonar.language=java # Additional parameters
sonar.my.property=value

上面的配置项根据名字和说明大概知道是做什么用的了,填上自己项目中对应的值即可。然后打开cmd窗口,去到你的项目根目录下,执行sonar-runner命令,这样sonar就开始分析你的项目代码了,分析完成之后,在浏览器中刚才那个9000端口地址的网页中就可以看到你的项目了。

安装Javascript插件

使用管理员的角色登录sonar,根据这个路径进入更新中心:Settings > System > Update Center。在Available Plugins窗口找到javascript插件,点击其中的install按钮进行安装(如下图所示)。安装完后重启sonar服务器即可。

利用Sonar定制自定义JS扫描规则(一)——sonar环境搭建的更多相关文章

  1. 利用Sonar定制自定义JS扫描规则(二)——自定义JS扫描规则

    在上一篇blog中,我们将sonar几个需要的环境都搭建好了,包括sonar的服务器,sonar runner,sonar的javascript插件.现在我们就来讲如何自定义JS扫描规则. 实际上有3 ...

  2. 利用Sonar定制自定义JS扫描规则(三)——SSLR JavaScript Toolkit 使用说明

    在上一篇blog中讲了在sonar中如何新增自定义的JS规则,这里面比较难的地方是XPath语句的编写,而要编写正确的XPath语句,首先要拿到语法的AST,下面我们就来介绍如何使用SSLR Java ...

  3. 利用Sonar定制自定义扫描规则

      上有3种方法可以自定义soanr的代码校验规则: 直接在sonar的web接口中增加XPath规则: 通过插件的功能来增加自定义规则,比如checkstyle,pmd等插件是允许自定义规则的: 通 ...

  4. Node.js【2】开发环境搭建(Windows、Linux&amp;Mac)

    安装方式有非常多种,以下仅仅是我喜欢的一种方式,安装的路径不一定要跟我一样. 眼下最新的版本号是v0.10.28 Windows 1.下载(放到E:\node\nodejs): http://node ...

  5. <Three.js>(第一节)环境搭建

    Three.js顾名思义3D的js库.是运行在浏览器的基于webgl的3D引擎.该引擎是github上的一个开源项目,下载地址:https://github.com/mrdoob/three.js/ ...

  6. Docker学习之——Node.js+MongoDB+Nginx环境搭建(一)

    最近在学习Node.js相关知识,在环境搭建上耗费了不少功夫,故此把这个过程写下来同大家分享一下,今天我先来介绍一下Docker,有很多人都写过相关知识,还有一些教程,在此我只想写一下,我的学习过程中 ...

  7. Drools 规则引擎环境搭建

    一.关于 drools 规则引擎 前面写过一篇 Drools 规则引擎相关的文章,这篇文章主要记录一下规则引擎的环境搭建和简单示例.不熟悉 drools 的朋友可以看看这篇文章: 自己写个 Drool ...

  8. EF里如何定制实体的验证规则和实现IObjectWithState接口进行验证以及多个实体的同时验证

    之前的Code First系列文章已经演示了如何使用Fluent API和Data Annotation的方式配置实体的属性,比如配置Destination类的Name属性长度不大于50等.本文介绍E ...

  9. 利用OpenShift托管Node.js Web服务进行微信公众号开发

    最近写了一个微信的翻译机器人.用户只要关注该公众号,发送英文的消息,就能收到中文翻译的回复.有兴趣的读者可以扫描下面的二维码关注该公众号,尝试发送英文单词试试看.(有时候第一次发送单词会收到“该公众号 ...

随机推荐

  1. format的用法:python

    https://www.cnblogs.com/wongbingming/p/6848701.html 它通过{}和:来代替%.通过位置 In [1]: '{0},{1}'.format('kzc', ...

  2. centos 目录结构 快捷键 ls命令,alias别名,so:动态库 a:静态库,环境变量PATH,Ctrl+z 暂停命令,Ctrl+a 光标到行首,Ctrl+e 光标到行尾,Ctrl+u 删除光标前所有字符 Ctrl+r 搜索命 hash命令 Ctrl+左箭头/右箭头 cd命令 第三节课

    centos 目录结构 快捷键 ls命令,alias别名,so:动态库 a:静态库,环境变量PATH,Ctrl+z 暂停命令,Ctrl+a 光标到行首,Ctrl+e 光标到行尾,Ctrl+u 删除光标 ...

  3. python 实现的比特币代码 及 加密货币学习线路图及书籍资料

    http://www.pycoind.org/ https://github.com/samrushing/caesure https://bitcointalk.org/index.php?topi ...

  4. Mybatis怎么在mapper中用多个参数

    原文地址:https://github.com/mybatis/mybatis-3/wiki/FAQ How do I use multiple parameters in a mapper? Jav ...

  5. Linux /proc/pid目录下各文件含义

    /proc 是一个伪文件系统, 被用作内核数据结构的接口, 而不仅仅是解释说明/dev/kmem. /proc 里的大多数文件都是只读的, 但也可以通过写一些文件来改变内核变量. ( Linux 内核 ...

  6. 程序员:统治世界or修复bug?

    程序员:统治世界or修复bug? 时至今日,我们依然生活在一个市场和技术受到高度崇拜的世界里,但是历史演化的规律提醒着我们:当一个东西开始成为社会崇拜的对象时,其中暗藏的不利因素将悄然的进行着.有人认 ...

  7. cocos2dx 3.x 拼图小游戏

    .h #define IMAGE_MAX 2 //图片的个数.. //图片结构体 属性 struct IMAGE_DATA { cocos2d::Sprite *m_pImage; bool m_bO ...

  8. react 修改循环列表的当前单个子项状态:思路 拿原始state数据更改,再做请求

    handleLike(item,index){ var id = item.id; _ENV.post( _ENV.HOST+'/communion/video-up', {'user_id':loc ...

  9. 微信 audio 获取 duration 为 NaN 的解决方法

    先加load() myaudio.load(); myaudio.oncanplay = function () { alert(myaudio.duration); } load() 方法用于在更改 ...

  10. mysql之innodb的锁分类介绍

    一.innodb行锁分类 record lock:记录锁,也就是仅仅锁着单独的一行 gap lock:区间锁,仅仅锁住一个区间(注意这里的区间都是开区间,也就是不包括边界值. next-key loc ...