sonar安装过程

来源:互联网 发布:java条码生成器 编辑:程序博客网 时间:2024/06/05 10:09

环境:Windows7,sonarqube5.6.6,java1.8,MySQL5.6

 

Sonar官网地址:https://www.sonarqube.org/downloads/,首页截图如下:


一般有两个推荐版本:带星的属于稳定版,推荐使用,但我2个版本都试过,没有问题。

一、环境配置

Sonar需要一些辅助配置软件,需要自己装一下,可以点击上方红框,里边有一些要求及说明,值得注意的就以下两点:

1、  jdk的安装,版本要求要1.8,注意1.7版本的不支持;

2、  数据库的安装,我本地用的MySQL,5.6或者5.7两个版本都可以,我装的是5.6版本;

二、创建数据库

MySQL安装完成后需要创建数据库:

CREATE DATABASE sonarCHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'sonar'IDENTIFIED BY 'sonar';GRANT ALL ON sonar.* TO'sonar'@'%' IDENTIFIED BY 'sonar';GRANT ALL ON sonar.* TO'sonar'@'localhost' IDENTIFIED BY 'sonar';

分别在workbench中执行以上四句话即可,

然而我第二句执行时失败的,

https://stackoverflow.com/questions/5555328/error-1396-hy000-operation-create-user-failed-for-jacklocalhost

这个地址解决了这个问题,可参考下。

三、sonar下载及配置

在上述官方网站上下载相应的版本,我下载的是5.6.6,解压到本地目录中,我直接放在了d:\SONAR中,在D:\SONAR\sonarqube-5.6.6\conf路径中找到配置文件:sonar.properties

打开后基本都是被屏蔽的,需要打开一下几条并修改内容:

sonar.jdbc.username=sonarsonar.jdbc.password=sonarsonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=falsesonar.web.port=9000

第三句是数据库的配置,我用的是MySQL,就这样写就行了;第四句是端口的设置,以后访问服务器时的地址是localhost:9000,这个9000就是在这设置的,这两个地方是同步的。

四、启动运行

Bin文件夹下会有不同的系统文件夹,我是Windows64位,选择Windows-x86-64,D:\SONAR\sonarqube-5.6.6\bin\windows-x86-64

双击StartSonar.bat文件,启动,如果出现以下界面(红色框内容是成功标志)证明启动成功了。


这时,在浏览器中输入localhost:9000,就能看到服务器界面了,如下:


Ps:我配置的时候搜了一些资料,在配置文件时好多种说法,我各种尝试都是不通的,原因就是配置文件不对,最后还好是我的长腿欧巴帮我仔细看了下配置文件中的注释,给我屏蔽掉了好多没用的配置,最后只剩下这几个,就成功了!

五、下载插件

下载插件有两种方案,一是在网上直接下压缩文件,放到sonar安装目录,二是直接在localhost:9000网页的个人中心安装,下面我详细介绍下第二种方案:

在localhost:9000页面的右上角有log in按钮,点击后登陆,用户名和密码都是admin,

登陆后点击administration按钮:


点击system>update center按钮:


在这个页面中可显示安装的、需要更新的等等各种插件,这里可选择想要安装的各种插件:


安装完成之后,右上角会有restart按钮,重启服务器

我装了c系列和java插件:


但是C系列的都是收费,和他们联系过,给过我15天的试用license。

这里有个中文的翻译包:


我装上了试一下,翻译的东西不多,然后好多教程里都是英文的,不得不说sonar的文档整理的太多了,也是比较详细的,而这里的英文和中文版的页面好多都对不上。。。。看着更闹心,果断卸载了、、、、、、

六、安装sonar scanner

代码扫描之前还要下载一个插件SonarQube Scanners,在很久很久以前,这个scanner可能叫做runner,因为我之前找的资料里都说要下载runner,我就迷茫了,找不到runner啊,于是乎我就按照sonar文档里的教程自行操作。在官网的首页中底部位置就可以下载SonarQube Scanners,如截图:


Scanner有好多版本,我还没来得及研究和其他软件配合的,只是单单的装个scanner


我同样把下载的压缩包解压到d:\SONAR文件夹中,这里需要把D:\SONAR\sonar-scanner-3.0.3.778-windows\bin路径配置下环境变量,方便后续的使用。

七、代码扫描

做了这么多准备工作,终于可以做一些扫描工作了,不过目前的状态还只能扫描java工程。Sonar的文档里有一些例子,大家可以自己下载看一下。

具体扫描的步骤:

1、  建一个文件夹,比如我要扫描autotravel工程,我建了个sonarqube-scanner-autotravel文件夹,在这个文件夹下再建个src文件夹,用来存放原代码,src同级目录下建个空文件:sonar-project.properties;

2、  sonar-project.properties文件内容如下:

sonar.projectKey=autotravelSonarQubeProjectsonar.projectName=AutotravleSonarQube Projectsonar.projectVersion=1.0sonar.sources=srcsonar.cfamily.build-wrapper-output=bw_outputsonar.sourceEncoding=UTF-8

第一行是项目关键字,第二行是项目名称,第三行是版本号,剩下的3行可以不做改动。

文件里的内容应该还可以设置好多内容,但是我还没研究,确切的说我没找到哪里是讲这个内容的,至少以上几条可以完成扫描工作了。

3、  打开cmd,调至刚刚建的sonarqube-scanner-autotravel文件夹,直接输入sonar-scanner,如果出现以下界面,证明扫描成功。


4、  打开浏览器,输入localhost:9000,可以查看扫描结果:


点进去可看见详细内容,自己分析吧。

八、几个注意点:

1、  我在双击StartSonar.bat文件启动sonar之后,页面停留之后,最好不要直接关闭,如果直接关闭,是认为关闭服务了,而你再双击启动时会报错,正确的做法是:启动后键盘输入Ctrl+C,会正常关闭,此时在重新双击是不会出错的;

2、  我按照之前的步骤安装完成之后,下次开机时是会自动启动sonar服务的,这时再双击StartSonar.bat文件也会失败;

3、  我在安装好5.6.6版本之后,想试一下6.5版本,直接启动6.5文件夹中的StartSonar.bat文件,仍然会报错,原因在于,数据库中配置的东西都是5.6.6的,此时删掉数据库的sonar表,重新建立新表,然后再启动6.5文件夹中的StartSonar.bat文件就可以正常使用了。

4、  在扫描C++代码时,会出错,是因为c类代码是收费的,我和他们的工程师联系,他们给我一个15天的试用license,但是似乎编译C代码时与java不同,需要一个编译的步骤,我一直没成功,各位如果有成功的,麻烦留言我也学习一下。


九、批处理文件自动拉取git代码再sonar扫描

我写了一个用批处理文件直接自动拉取git代码然后再通过sonarqube自动扫描的脚本,这里贴给大家,希望有用。

cd /d e:\if existe:\gitclone\ (echo 删除rd /s /qe:\gitclone\)echo 创建gitclonemde:\gitclone\echo 进入gitclonecdgitcloneecho 创建srcmd srcecho 进入srccd srcechocloneSet /Pgitpath=请输入git地址:git clone%gitpath%cd ..Set /PprojectKey=请输入projectKey:echosonar.projectKey=%projectKey%>>sonar-project.propertiesSet /PprojectName=请输入projectName:echosonar.projectName=%projectName%>>sonar-project.propertiesSet /PprojectVersion=请输入projectVersion:echosonar.projectVersion=%projectVersion%>>sonar-project.propertiesechosonar.sources=src>>sonar-project.propertiesechosonar.cfamily.build-wrapper-output=bw_output>>sonar-project.propertiesechosonar.sourceEncoding=UTF-8>>sonar-project.propertiessonar-scannerpause

其中的路径之类大家根据需要自行修改就好。

十、昨天为了写这篇博客,把所有东西都卸掉,按照上述的步骤一步一步重新操作,以防有什么漏洞,结果,再进行java代码扫描时就失败了,提示错误:

Please provide compiled classes of your project with sonar.java.binaries property
思前想后,也没有哪个地方是错误的呢,搞了小半天,也没能行,只好去sonar官网上找漏洞,结果发现了,SonarQube Java更新了,文档中有这样一段话:

Java bytecode is required

Analyzing a Java project without providing the Java bytecode produced by javac (Android users: Jack doesn't provide the required .class files) and all project dependencies (jar files) is possible, but will result in an increased number of false negatives, i.e. legitimate issues will be missed by the analyzer.

From SonarJava version 4.12 binary files are required for java projects with more than one java file. If not provided properly, analysis will fail with the message

Please provide compiled classes of your project with sonar.java.binaries property

See Java Plugin and Bytecode for how to provide the Java bytecode if you are not using Maven to run your analysis.

我再进一步查看之后,是这个界面:

看不懂的说。。。大写的尴尬。。。

于是乎就想那就找个之前版本吧,文章前一部分我写过,安装插件时有两种方法,一是直接在服务器中自动安装,二就是下载好插件的jar包,手动放到安装目录的固定目录(D:\SONAR\sonarqube-5.6.6\extensions\plugins)下,可是官网上不让下载之前的版本了!!!那就从网上搜一个吧,基本没有,都是很早之前的版本了。。。。

那怎么办呢???正在毫无思绪的时候。。。忽然想起来,我之前是试验过2个版本的,那么一个版本升级了,另一个版本肯定没动啊!于是乎,我去另一个版本的路径下找到对应的插件jar包,替换,重启服务器,OK!!!成了~~~完美解决!

不过,我现在要去研究下,如果是新版本要怎么处理了、、、、

研究完了,又回来了继续写文档了。。。

回过头看,其实提示的那一句话就是最好的解决思路:

Please provide compiled classes of your project with sonar.java.binaries property
在sonar-project.properties配置文件中加入sonar.java.binaries属性,sonar.java.binaries提供编译后的class文件,用逗号隔开:

注意其中的文件夹斜杠方向!

bin里放的就是class文件,bin和src是同级目录。

原创粉丝点击