1.前言

在项目上线之前一般都会进行安全审查及漏洞扫描,而Sonar qube就是一款市面上使用较为广泛的代码审查工具,经过Sonar scanner代码审查后把出现在代码里的问题都暴露出来并进行分类,开发人员根据严重程度解决排期,将问题数量降低,这样就可以创建并维护一个干净的代码基础,从而减少项目上线后的各种安全问题。因此,可以清楚的知道,Sonar Scanner负责对代码进行扫描,同时会将扫描的结果上传到Sonar Qube服务器上,而Sonar Qube负责对扫描的结果进行可视化的展示。

2.安装

对于Sonar,有两种安装方式,一种是使用zip压缩包方式,另一种是使用docker进行安装。

2.1 zip方式安装

说明:Sonar Qube从7.9版本开始,就要求有JDK11+的运行环境,所以前提是本地已安装JDK11或更高的版本。这里以JDK17 + Sonar 10.2.1为例进行说明。

在官网下载后是一个压缩包,需要解压。网盘下载:链接:https://pan.baidu.com/s/1KIw-5YSW8s67maICyLqYnw   提取码:6666

2.2 docker方式安装

若本地有docker环境,则使用docker方式更加方便。

拉取镜像并启动

docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:latest

端口是9000.

3.启动和扫描

3.1 启动

这里的启动是以zip方式安装进行说明,如果是docker方式安装,则直接启动容器即可。

1)打开/bin/windows-x86-64目录(这里选择Windows系统,还有其他系统可自行选择)

双击StartSonar.bat启动服务(启动前确保本机有JDK11+)

启动后,应用启动完成如下图:

3.2 登录后台管理界面

在浏览器访问http://localhost:9000,进入后台管理界面,登录界面输入用户名和密码(默认都是admin),首次进入需要修改密码,进入首页后是空的,需要创建项目

在创建项目界面输入项目名称和key,这些可以根据自己的需求填写

这里就选择使用统一的code,点击“create project”

选择项目的来源,可以通过Jenkins、github等多种来源,这里就以本地(Local)进行说明

点击“Generate”生成认证的token,然后点击“continue”

构建方式这里就先选择maven,就会生成对应的maven命令,先复制下来,去掉反斜杠,将其改为一行

3.3 创建maven项目,进行代码扫描

创建一个Springboot项目(普通的maven项目也可),其中代码如下:

package com.zxh.service;

import java.math.BigDecimal;
import java.util.List; public class TestService { public void test1() {
List<String> l = null;
l.add("1");
} public void test2() {
double d = 1.1;
BigDecimal bd1 = new BigDecimal(d);
BigDecimal bd2 = new BigDecimal(1.1);
String s="1242939110932921";
String s2=s.replaceAll("1","-");
System.out.println(s);
}
}

打开当前项目目录,在终端中执行上述的maven命令(前提是maven配置了环境变量,这里先使用命令方式,后续后其他方式),执行成功如下图所示

可能出现的问题:

问题1:若执行maven时出现下面错误,是由于新版jdk安装时没有生成jre导致的

则需要手动指定jdk的路径

问题2:手动执行扫描命令时报错

这个原因是因为输入的命令有问题,被cmd给截取了。但是明明是从sonar复制的命令,怎么会有错误呢?其实是操作系统的锅

只需要给带参数的地方使用双引号即可(如果不报错则无需添加)

执行成功后,在首页即可看到对应的bug和异味等信息

点击进去,看到的就是bug原因列表

再继续深入进去,看到的就是产生bug的代码、原因及处理建议(使用上下箭头进行问题的切换)

3.4 安装中文插件

上述界面全是英文的,当然也提供了中文的插件。

在搜索框输入Chinese搜索中文汉化包并安装,如果遇到首次安装插件报错,重启服务后再安装即可

安装完成后会提示需要重启服务

重启后就是中文版本了

上述是直接在管理界面安装插件,sonar也提供了本地安装的方式。

把需要安装的jar下载到本地,放到 <SONARQUBE_HOME>/extensions/plugins 目录即可。

3.5 扫描配置到maven

上面在进行扫描时,都需要那么长的一串命令,显得有些麻烦,这时可以将其配置到maven中,就会简单许多。

1)在setting.xml配置sonar的信息

代码:

<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>

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

2)在项目根目录下执行安装和扫描

mvn clean install
mvn sonar:sonar

这样每次改完代码后,需要执行的就很少了,再或者将其写入一个bat文件,后续直接执行即可。

4.常见问题

4.1如何关闭Sonar Qube服务

在window环境关闭Sonar Qube服务器时,不要直接关掉启动窗口,而是手动使用ctrl+ccmd控制台关闭,否则容易出现应用关闭不彻底的情况。

Sonar代码扫描,你会使用吗?的更多相关文章

  1. jenkins:集成sonar代码扫描+发送邮件

    前提: Jenkins JDK 目录: 1.安装sonar插件:SonarQube Scanner for Jenkins 2.安装SonarQube 3.安装sonar-scanner ++++++ ...

  2. Sonar代码质量管理工具

    最近上线了,Sonar代码扫描工具: 与jenkins集成: 实现自动扫描: 下面来简单聊聊Sonar能解决什么问题: ---------------------- Sonar简介 Sonar是一个用 ...

  3. 使用jenkins+sonar进行代码扫描,并发送自定义邮件

    jenkins架构 1.一台机器作为jenkins master不进行构建操作,只负责调度其他slave节点执行任务 2.一台slave机器作为执行机器存放从gitlab上拉取的代码,使用sonar- ...

  4. DEVOPS技术实践_05:sonar静态代码扫描

    一.SonarQube静态代码扫描平台 1.1 安装 https://www.sonarqube.org/官网 1.2 下载软件包 https://www.sonarqube.org/download ...

  5. Jenkins集成openshift容器中进行代码扫描

    1.Dockerfile sonarDockerfile: (基础slave镜像参考上篇博文) FROM registry.it.com/openshift/jenkins-slave:latest ...

  6. [ci] 基于1 上文实现拉取代码后能自动触发sonar-runner实现代码扫描评测,job1完成

    基于1 上文实现拉取代码后能自动触发sonar-runner实现代码扫描评测,job1完成   添加sonar插件 SonarQube Plugin   配置: 系统设置à告知jenkins,sona ...

  7. 03 . Jenkins构建之代码扫描

    Sonar简介 Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson/Jenkins 等)不 ...

  8. 功能+自动化测试代码扫描(demo)

    Jacoco 是一个开源的覆盖率工具.Jacoco 可以嵌入到 Ant .Maven 中,并提供了 EclEmma Eclipse 插件,也可以使用 Java Agent 技术监控 Java 程序.很 ...

  9. SonarQube+Jenkins+Cppcheck实现C++代码扫描

    背景:公司部分项目是由C++进行开发,因此对此有需求. sonarqube:docker化安装(alpine系统),版本8.3.1 (build 34397) jenkins:docker化安装,版本 ...

  10. 持续集成工具之jenkins+sonarqube做代码扫描

    上一篇我们主要聊了下代码质量管理平台sonarqube的安装部署以及它的工作方式做了简单的描述和代码扫描演示:回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13 ...

随机推荐

  1. Phenomenon•uncertainty•Process and Outcome•Random与Stochastic•Probability概率•条件概率•条件独立与相互独立

    Phenomenon现象 uncertainty不确定性 Process过程 and Outcome结果 Random随机,包含多种多样的Distribution; Stochastic常指满足Ran ...

  2. SciTech-BigDataAIML-LLM-AI换脸:脸部表情实时提取映射另外一张脸(只需要一张脸部照片)

    SciTech-BigDataAIML-LLM-AI换脸 https://github.com/hacksider/Deep-Live-Cam real time face swap and one- ...

  3. 圆刚C725B金星标清采集卡

    C725标清采集卡是一张支持AV端子.S端子以及立体声输入的PCIe卡,可将PAL.NTSC和SECAM等模拟格式影像数字化.采集并另存为无压缩的AVI格式档案.C725标清采集卡随附的软件开发工具包 ...

  4. PACS业务流程图-九五小庞

  5. 进阶篇:3.1.3)DFM塑胶-成型不良的原因及调节方法详解

    本章目的:作为结构工程师,怎么处理注塑件成型不良的问题. 1.前言 注塑件成型不良是一个结构工程师常常需要面对的问题.很多时候并非设计上有问题,而是制造过程中的问题导致成品的不良.结构工程师了解成型不 ...

  6. linux 搭建gitlab git仓库迁移

    gitlab搭建 https://www.cnblogs.com/yanjieli/p/10605381.html 注意里面会进入vim修改配置文件,修改好后,按Esc 输入  :wq  保存并退出 ...

  7. Abp vNext -动态 C# API 实现原理解析

    作为铺垫后续阅读源码的一些帮助,开始想直接开始尝试读源码,但是发现上下文连接不紧密,很突兀,所以还是简单介绍下如何使用.最起码从0-1.然后发现他解决的问题, 其实官方文档是有介绍如何使用的,只是比较 ...

  8. 2.20模拟赛T3解析

    零.送给未来复习的自己: 如果一段时间后看不懂自己的题解了,可以尝试拿\(n=12\)这一样例模拟,因为\(n=2^2\times 3^1\)只有两个不同的质因子,并且一个是指数只有\(2\),一个指 ...

  9. px 和 rem已经过时?

    从 px 的绝对统治,到 rem 成为响应式设计的事实标准,我们似乎已经找到了完美的解决方案. 然而,如果你最近观察一些顶尖科技公司的前端代码库或设计系统,你会发现一个新的趋势正在悄然兴起:px 和  ...

  10. 解决新版chrome在http协议下无法调用摄像头和麦克风的问题

    新版本的chrome浏览器,在http协议下安全性原因导致无法调用摄像头和麦克风,解决方法如下: 方法一: 在浏览器地址栏中输入"chrome://flags/#unsafely-treat ...