SonarQube安装使用教程(仅为自己学习过程中记录)

1. 简介:

sonarqube是一个开源代码质量管理平台,可通过安装不同的插件sonar可以集成测试工具、代码质量分析工具、持续集成等多种功能。sonarqube架构主要由:sonarqube服务器、sonar数据库、插件、sonarqube scanners四部分组成。

Sonar的工作原理

Sonar实际上是一个Web系统,展现了静态代码扫描的结果,结果是可以自定义的,而真正实现代码扫描的是Sonar Scanner这个工具,另外同时支持多种语言的原理是它的扩展性,通过插件实现的,也就是Java Jar架包,可以在Sonar平台上在线安装或者离线安装。
SonarQube 需要数据库的支持,用于存储检测项目后的分析数据,同时为了实现可持续监测,还需要持续集成工具(如Jenkins)的支持,在构建版本前,通过Jenkins+Sonar 插件执行项目分析指令,最终的结果会通过SonarQube 服务器的Web 页面展示。下图是使用SonarQube做代码持续审查的流程图:

image.png

开发人员把代码push到SCM(如gitlab)【上图第2步】,jenkins构建定义好的job,然后通过jenkins 插件(sonar scanner)分析源码【上图第3步】,jenkins把分析报告发到sonarqube server【上图第4步】。

二. sonarqube下载安装

注:在这里是安装7.7。sonarqube7.7之前可以用mysql(而且mysql的版本>5.6小于8.0,具体可以看conf下的sonar.properties),之后就不支持。

  1. 首先确保安装了jdk11(jdk版本太低会报错)


    image.png
  2. 到此链接 https://www.sonarqube.org/downloads/下载sonarqube(下载社区版,是免费的),并解压,解压完之后就可以用啦
  3. 到解压完之后的目录下,我是在这里D:\sonarqube-7.7\bin\windows-x86-64,双击StartSonar.bat文件,启动StartSonar
  4. 到浏览器界面,输入 : http://localhost:9000 //能够进入界面表示安装成功
  5. 登录:默认用户名密码是admin(登录前后的区别是登录后多了配置,其余的感觉没太大区别)


    image.png
  6. 安装中文插件:安装成功后重启sonar


    image.png

三、开始分析项目源代码

扫描器有四种:

3.1使用maven的方式分析

  1. 编写maven的settings.xml文件
    我的位置是在D:\apache-maven-3.5.0\conf\settings.xml
    找到对应的位置添加以下代码:
<settings>
    <pluginGroups>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
    <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- Optional URL to server. Default value is http://localhost:9000 -->
                <sonar.host.url>
                  http://localhost:9000
                </sonar.host.url>
            </properties>
        </profile>
     </profiles>
</settings>

我的是这样


image.png

image.png
  1. 在需要代码检查的项目的根目录下(也就是带有pom.xml的目录)执行命令
    mvn clean verify sonar:sonar
    出现build success表示成功


    image.png

    浏览器输入红框处地址即可查看,或者刷新页面

3.2SonarQube实现GitLab代码审计(还在进行中)

  1. 下载插件包 sonar-gitlab-plugin-4.1.0-SNAPSHOT.jar(gitlab插件)
    放到D:\sonarqube-7.7\extensions\plugins这个下面;或者按照安装中文插件的方式安装
  2. 下载Gitlab Runner,安装环境、注册Gitlab Runner

GitLab Runner是一个开源项目,用于运行您的作业并将结果发送回GitLab。它与GitLab CI一起使用,GitLab中包含的开源持续集成服务可以协调工作。
官网教程:https://docs.gitlab.com/runner/install/windows.html

gitlabrunner.png
  • gitlab ci的地址以及token,从你要配置该runner到哪个项目,就去gitlab下该项目首页右侧设置—》CI/CD Pipelines—》Specific Runners下可以找到。
  • gitlab-ci tags这个很重要,在项目构建流程yaml文件里面指定tag,就是匹配使用哪个tag的runner,这里我定义了my-tag,another-tag;回头再配置文件里面就指定这个tag。
  • executor:执行者可以有很多种,这里我们使用shell
    (1)gitlab-ci token的获取()


    image.png
  1. 编写gitlab-ci.yml并将其放在Gitlab上的根目录下,当存储库发生任何更改时,他将启动这个脚本
stages:
  - build
  - test
job1:
  stage: test
  script:
  - sh test.sh
  artifacts:
    paths:
    - data_test/
job2:
  stage: build
  script:
  - echo 'suceed test' >> txt1
  1. gitlab和sonar之间互通
    (1)首先需要登录开发人员和设计人员的GitLab账户,获取个人的Token,如果没有Token,可以新建一个
    (2)登录SonarQube账户,配置GitLab地址和账户Token信息
    应用id是项目的id


    image.png

四、webhook

参考:

  1. https://blog.csdn.net/u011884671/article/details/80525727?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2
  2. https://blog.csdn.net/weixin_40861707/article/details/82117232

sonar7.7 webapi解析

  1. 点进自己的某一个扫描后的项目project,会在右下角发现一个projectKey.:org.sonarqube:sonarscanner-maven-aggregate
  2. Web API文档路径:http://localhost:9000/web_api
  3. 认证api:
    POST api/authentication/login 参数是login和password 没有特别说明的话,这里的login和password都是admin,可以在sonar页面的最上方Administration里点进行密码修改,也可以直接修改config文件.
    如果使用POSTMAN测试接口需要认证的sonar GET接口,可以在postman的认证里,选basic auth,然后填login和password,再发GET请求就可以了。
    http://localhost:9000/api/authentication/validate
    image.png

api/projects/search搜索项目或视图来管理它们。


image.png

https://blog.csdn.net/qq_33655674/article/details/79592305?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2

https://www.cnblogs.com/zhhiyp/p/9716158.html
java调用Api接口工具类https://blog.csdn.net/BoomLee/article/details/93032032
生成PDFhttps://gitee.com/jlynet007/sonar-pdf-plugin/tree/master

image.png

五、问题

注意:在结束服务时,要在终端界面执行ctrl+c命令,出现选择yes或者no时,选择yes退出,否则就要按照问题1的解决方法去解决。

  1. 启动SonarQube,在浏览器输入http://localhost:9000/about,SonarQube服务端闪退。(学会去看错误日志,里面有出现错误的原因)
    解决办法:查看/logs/下的日志,发现org.elasticsearch.transport.BindTransportException: Failed to bind to [9001]
    Caused by: java.net.BindException: Address already in use: bind
    查看占用端口的进程PID:netstat -aon | findstr "9000"
    杀死占用端口的进程:taskkill /pid 19528 /f
    具体解决方法如下图所示
    image.png

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

推荐阅读更多精彩内容