sonar安装过程_sonar.cfamily 平替-程序员宅基地

技术标签: 代码质量管理  sonar  

环境: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安装完成后需要创建数据库:

 
  1. CREATE DATABASE sonarCHARACTER SET utf8 COLLATE utf8_general_ci;

  2.  
  3. CREATE USER 'sonar'IDENTIFIED BY 'sonar';

  4.  
  5. GRANT ALL ON sonar.* TO'sonar'@'%' IDENTIFIED BY 'sonar';

  6.  
  7. 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

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

 
  1. sonar.jdbc.username=sonar

  2.  
  3. sonar.jdbc.password=sonar

  4.  
  5. sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

  6.  
  7. sonar.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=autotravelSonarQubeProject

sonar.projectName=AutotravleSonarQube Project

sonar.projectVersion=1.0

sonar.sources=src

sonar.cfamily.build-wrapper-output=bw_output

sonar.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自动扫描的脚本,这里贴给大家,希望有用。

 
  1. cd /d e:\

  2. if existe:\gitclone\ (

  3. echo 删除

  4. rd /s /qe:\gitclone\

  5. )

  6. echo 创建gitclone

  7. mde:\gitclone\

  8. echo 进入gitclone

  9. cdgitclone

  10. echo 创建src

  11. md src

  12. echo 进入src

  13. cd src

  14. echoclone

  15. Set /Pgitpath=请输入git地址:

  16. git clone%gitpath%

  17. cd ..

  18. Set /PprojectKey=请输入projectKey:

  19. echosonar.projectKey=%projectKey%>>sonar-project.properties

  20. Set /PprojectName=请输入projectName:

  21. echosonar.projectName=%projectName%>>sonar-project.properties

  22. Set /PprojectVersion=请输入projectVersion:

  23. echosonar.projectVersion=%projectVersion%>>sonar-project.properties

  24. echosonar.sources=src>>sonar-project.properties

  25. echosonar.cfamily.build-wrapper-output=bw_output>>sonar-project.properties

  26. echosonar.sourceEncoding=UTF-8>>sonar-project.properties

  27. sonar-scanner

  28. pause

 

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

十、昨天为了写这篇博客,把所有东西都卸掉,按照上述的步骤一步一步重新操作,以防有什么漏洞,结果,再进行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是同级目录。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Birds_Cerebrum/article/details/82465198

智能推荐

Python之爬虫 搭建代理ip池_python爬虫ip代理池-程序员宅基地

文章浏览阅读2.6w次,点赞23次,收藏178次。文章目录前言一、User-Agent二、发送请求三、解析数据四、构建ip代理池,检测ip是否可用五、完整代码总结前言在使用爬虫的时候,很多网站都有一定的反爬措施,甚至在爬取大量的数据或者频繁地访问该网站多次时还可能面临ip被禁,所以这个时候我们通常就可以找一些代理ip来继续爬虫测试。下面就开始来简单地介绍一下爬取免费的代理ip来搭建自己的代理ip池:本次爬取免费ip代理的网址:http://www.ip3366.net/free/提示:以下是本篇文章正文内容,下面案例可供参考一、User-Ag_python爬虫ip代理池

c++ vs 创建 64位dll动态库_vs c++生成64位dll-程序员宅基地

文章浏览阅读2.6k次,点赞4次,收藏5次。vs 生成x64位dll动态库_vs c++生成64位dll

高版本SQL备份在低版本SQL还原问题-程序员宅基地

文章浏览阅读1.1k次。问题描述: 高版本SQL备份在低版本SQL还原问题(出现媒体簇的结构不正确) 分析原因: SQL版本兼容问题,SQL SERVER兼容级别是用作向下兼容用,高版本的SQL备份在低版本中不兼容解决方法:1:通过管理器的脚本生成向导,把数据库,表,存储过程等对象的脚本生成,然后在低版本的SQL Server下执行建立这些对象.。 2:通过DTS/SSIS,将表中的数据导过去。 此..._备份sql 2016数据库还原到sql2005

Java编写简单的贪吃蛇小游戏(GUI)_开发简易贪吃蛇小游戏-程序员宅基地

文章浏览阅读704次。贪吃蛇文章目录贪吃蛇1、游戏的主启动类2、图片3、游戏的面板图片素材1、游戏的主启动类package com.lan.snake;import javax.swing.*;//游戏的主启动类public class StarGame { public static void main(String[] args) { //1.新建一个窗口..._开发简易贪吃蛇小游戏

android wifi省电模式,android系统中wifi省电模式下的四个基本概念:TIM、DTIM、Beacon-Interval、Listen-Interval...-程序员宅基地

文章浏览阅读1.4k次。1、TIM(traffic indication message)每一个Beacon的帧中都有一个TIM信息,它主要用来由AP通告它管辖下的哪个STA有信息现在缓存在AP 中,而在TIM中包含一个Bitmap control 字段,它最大是251个字节,每一位映射一个STA,当为1时表示该位对应的STA在AP的缓存中有信息。2、DTIM(Delivery Traffic Indication Me..._beacon帧中的tim及相关字段

详解三大编译器:gcc、llvm 和 clang_llvm gdb 关系-程序员宅基地

文章浏览阅读2.6k次,点赞4次,收藏11次。传统的编译器通常分为三个部分,前端(frontEnd),优化器(Optimizer)和后端(backEnd)。编译器一般构成传统的编译器通常分为三个部分,前端(frontEnd),优化器(Optimizer)和后端(backEnd)。在编译过程中,前端主要负责词法和语法分析,将源代码转化为抽象语法树;优化器则是在前端的基础上,对得到的中间代码进行优化,使代码更加高效;后端则是将已经优化的中间代码转化为针对各自平台的机器代码。GCCGCC(GNU Compiler Collect..._llvm gdb 关系

随便推点

斯坦福CS229(吴恩达授)学习笔记(4)_cs 229, fall 2018 problem set #1: supervised learn-程序员宅基地

文章浏览阅读194次。CS229-notes2说明正文Problem Set #1: Supervised learning4. Naive Bayes说明此笔记 是cs229-notes2讲义中的第二部分学习内容,与B站上的“05 生成学习方法”视频对应,主要是对讲义中一些推理的补充以及一些重点内容的记录,另外还会附加该部分相对应的习题解答和算法的C++实现。课程相关视频、讲义等资料可参照《斯坦福CS229(吴..._cs 229, fall 2018 problem set #1: supervised learning

ProE5.0破面修补修复教程 IGS STP补面_icefai 修补破面-程序员宅基地

文章浏览阅读1.8k次。ProE5.0破面修补修复视频教程 IGS STP补面链接:https://pan.baidu.com/s/18WDPEYIqsXFrIPGB7359gw提取码:3t49_icefai 修补破面

软件工程经济学工程认证作业整理_工程经济学 大作业-程序员宅基地

文章浏览阅读2.1k次,点赞7次,收藏24次。1. 软件企业在生产与经营过程中将面临哪些工程经济活动 ?这些工程经济活动所围绕的企业目标有哪些?答:可行性分析:招标与投标;时间/进度、资源、成本计划;投资与融资;设备、工具、原材料、厂房的购买后租赁;开发团队的组织与建设;生产过程设计与分析;测试计划与组织;软件发行确定;软件定价;软件营销策划;风险控制;成本、质量、工期、与进度控制;硬件折旧;项目成本确定;销售收入确定;税金确定;效益(利润)确定。这些工程经济活动所围绕的企业目标:①税金;②销售收入;③效益/利润;④设备折旧;⑤项目成本。2. 什么_工程经济学 大作业

设置vim显示中文_vim 显示中文-程序员宅基地

文章浏览阅读9.3k次,点赞6次,收藏9次。今天看服务器的log发现有些文件的中文都是乱码,找了一圈发现是vim设置的问题,因为用less或者cat命令查看log都是正常的,用vim查看才出现的乱码。编辑~/.vimrc文件,添加set encoding=utf-8set termencoding=utf-8set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,eu_vim 显示中文

android handler 多线程demo_android 记事本 线程-程序员宅基地

文章浏览阅读7.5k次。andriod提供了 Handler 和 Looper 来满足线程间的通信。为了研究其中线程机制的问题,写了2个demo:Demo1:package com.mp;import android.app.Activity;import android.os.Bundle;import android.os.Handler;public class MyThread extends Activity { private Handler handler_android 记事本 线程

Linux默认的系统管理账号是(),Linux系统管理用户账号详解-程序员宅基地

文章浏览阅读1.2w次,点赞4次,收藏11次。Linux系统将管理账号分为管理用户账号跟管理组账号,作用本质一样,都是基于用户身份来控制对资源的访问,区别在于是单个用户还是多个用户组成的群组。今天小编就先来详细介绍下,Linux系统的管理用户账号。在 Linux系统中,根据系统管理的需要将用户账号分为不同的类型,同时也有不同的权限与不同的功能,主要分为超级用户、普通用户和程序用户。1)超级用户:root用户是 Linux系统中默认的超级用户账..._linux默认的系统管理员账号是

推荐文章

热门文章

相关标签