首页 > 其他分享 >Sonar代码扫描,你会使用吗?

Sonar代码扫描,你会使用吗?

时间:2023-11-09 21:24:01浏览次数:28  
标签:代码 扫描 maven Sonar docker 安装

1.前言

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

其官网:https://www.sonarsource.com/products/sonarqube

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配置了环境变量,这里先使用命令方式,后续后其他方式),执行成功如下图所示

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

则需要手动指定jdk的路径

 执行成功后,在首页即可看到对应的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控制台关闭,否则容易出现应用关闭不彻底的情况。

 

标签:代码,扫描,maven,Sonar,docker,安装
From: https://www.cnblogs.com/zys2019/p/17804325.html

相关文章

  • 静态代码块
       ......
  • 代码雨
    centos运行代码雨1.下载软件包[root@web-7/opt]#wgethttp://jaist.dl.sourceforge.net/project/cmatrix/cmatrix/1.2a/cmatrix-1.2a.tar.gz[root@web-7/opt]#ll-htotal76K-rw-r--r--1rootroot73KApr12002cmatrix-1.2a.tar.gz2.安装所需依赖[root@web-7......
  • 游戏类软件开发常用代码分享!
    随着科技的迅速发展,游戏软件开发已经成为当今最热门的行业之一,许多开发者和游戏爱好者都渴望了解游戏开发的底层技术和常用的代码,本文将分享游戏类软件开发中一些常见的代码和相关技术,帮助大家更好地了解这个领域。一、游戏引擎与开发工具游戏引擎是游戏开发的核心,它为开发者提供了......
  • 在ASP.NET中上传下载文件实例代码
    usingSystem.IO;//检查上传文件不为空if(File1.PostedFile!=null)  {       string nam=File1.PostedFile.FileName;   //取得文件名(抱括路径)里最后一个"."的索引   int i=nam.LastIndexOf(".");   //取得文件扩展名   string newext=nam......
  • 邮差之死--python源代码
    """sthimported"""importtimeimportos'''2flags'''flag=0tmp=0'''7ending'''defend1():os.system("cls")print('面对暴怒的院长,你在心里十分唾......
  • STM32F407 LUA 串口代码传输进行功能热更新
    STM32F407LUA串口代码传输进行功能热更新1.首先放上LUA资源LUA2.整体思路创建keil工程--->移植lua--->补充相应功能3.移植LuaStep1正常解压即可只有这个文件有用Step2在这个文件夹里搜索,删掉这两个文件(这两个文件在stm32中不使用)剩余的文件按照添加BSP的流......
  • IDEA 集成 EasyCode 插件,快速生成自定义 mybatisplus 代码
    IDEA集成easyCode插件在idea插件市场中,搜索EasyCode插件,下载并进行安装EasyCode插件介绍1.修改作者名称EasyCode插件可以修改作者名称,即生成代码后,注释中自动添加相应作者的姓名。2.TypeMapperTypeMapper指的是生成mapper.xml文件中数据库中的字段和java......
  • 《代码整洁之道》阅读笔记(一)
    第一部分:代码质量的重要性与良好的编码风格第一部分深入探讨了代码整洁之道的核心思想:代码质量和良好的编码风格。这一部分为我提供了一个深刻的认识,即写出高质量的代码不仅是开发者的技能,更是一种责任。作者强调了代码是一种沟通工具,不仅是为计算机执行而编写的。这一部分详细......
  • js能实现301跳转吗,能返回301状态码?举个代码例子
    在JavaScript中实现301重定向通常是在服务器端进行的,因为301重定向是一种永久性的重定向,它需要在HTTP响应中设置状态码。客户端JavaScript(例如在浏览器中运行的)通常不能直接设置HTTP状态码,因为这是由服务器处理的。但是,如果你在服务器端使用Node.js,你可以实现301重定向。以下是一......
  • 格式化SQL代码语句 format t-sql
      http://www.red-gate.com/products/SQL_Refactor/index.htmhttp://orafaq.com/utilities/sqlformatter.htmhttp://mikeschinkel.com/blog/anyoneknowofatsqlcodeformatter/http://software.topcoder.com/catalog/c_component.jsp?comp=10029208&ver=1http://www.red-gat......