首页 > 其他分享 >别再说代码质量难评估了!SonarQube一键分析代码质量他不香吗?

别再说代码质量难评估了!SonarQube一键分析代码质量他不香吗?

时间:2023-07-07 22:32:20浏览次数:60  
标签:SonarQube 代码 如下 Sonar version 所示 不香

无论是架构师还是研发经理,代码质量都是必须要关注的重点。Sonar(没错,是 Sonar,不是 SonarQube)是一个用于代码质量管理的开源平台,用于管理代码的质量。

它通过插件形式可以支持二十几种语言的代码质量检测,通过多个维度的检查了快速定位代码中潜在的或者明显的错误。千里之行始于足下,今天就让我带大家用一个简单的例子,看看怎么使用 SonarQube 进行代码质量管理。

基础概念

SonarQube

SonarQube 是 Sonar 的服务端,相当于一个 web 服务器中的 tomcat,用来发布应用,在线浏览分析等。

Sonar Scanner

Sonar Scanner 是对源码进行扫描的工具,它可以将结果保存到数据库以便用上面的 SonarQube 进行分析。关于 Sonar Scanner 更多的内容,见官方文档:Analyzing source code overview
https://docs.sonarqube.org/latest/analyzing-source-code/overview/

环境配置

JDK 配置

SonarQube 最新版本需要 JDK11 以上,需要先配置好 JDK 开发环境。配置好之后再命令行运行 java -version 查看,如果运行没报错说明配置成功,如下代码所示。

$ java -version
java version "17.0.6" 2023-01-17 LTS
Java(TM) SE Runtime Environment (build 17.0.6+9-LTS-190)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.6+9-LTS-190, mixed mode, sharing)

Maven 配置

后续将会使用 Sonar Scanner for Maven 来分析项目,因此需要有安装 Maven 并配置好对应的环境变量。配置好之后运行 mvn -version 查看,如果运行没报错说明配置成功,如下代码所示。

[~]$ mvn -version
Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T19:57:37+08:00)
Maven home: /Users/xxxx/Yosemite/Alpha/maven
Java version: 11.0.18, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
Default locale: en_GB, platform encoding: UTF-8
OS name: "mac os x", version: "11.4", arch: "x86_64", family: "mac"

数据库支持

SonarQube 最新版本支持 SQLServer、Oracle、H2 等数据库来存储数据,但并不支持 MySQL 数据库。SonarQube 默认会使用 H2 内存数据库来临时存储数据,可能查看数据的时候会比较不方便。

安装启动 SonarQube

到 Sonar 官方网站下载 SonarQube:Clean Code | Developer First | Sonar,这里我们选择社区版,如下图所示。

别再说代码质量难评估了!SonarQube一键分析代码质量他不香吗?_代码质量

下载完成之后解压可以看到如下图所示目录,其中 bin 是运行应用的目录、conf 是配置文件的目录、logs 是日志的目录。

别再说代码质量难评估了!SonarQube一键分析代码质量他不香吗?_Java_02

这里我们打开 bin 文件夹,可以看到有多个不同目录对应不同系统。我这里是 Windows 系统就打开 macosx-universal-64 目录,随后运行 ./sonar.sh start 命令运行。运行之后,会启动 SonarQube 所需要的各个服务,包括 ElasticSearch 等。如果一切正常,那么日志会提示 SonarQube is operational,如下图所示。

别再说代码质量难评估了!SonarQube一键分析代码质量他不香吗?_数据库_03

随后,打开 SonarQube 的管理后台地址:http://127.0.0.1:9000,输入默认的账号密码:admin/admin,点击登录之后会要求你修改密码。修改密码之后就进入了 SonarQube 管理后台,如下图所示。

别再说代码质量难评估了!SonarQube一键分析代码质量他不香吗?_代码质量_04

SonarQube 也提供了 Docker 启动的方式,镜像地址为:sonarqube - Official Image | Docker Hub。 用 Docker 的好处就是:你可以省去上面所有的配置,一个命令就启动 SonarQube,真的是太方便了!

扫描简单项目

SonarQube 启动完成之后,这里用我之前的 chenyurong/quick-start-of-spock: help you to learn spock quickly. 项目来体验下 SonarQube 的代码扫描功能。

首先,我们选择手工导入项目的方式,来导入我们的本地项目,如下图所示。

别再说代码质量难评估了!SonarQube一键分析代码质量他不香吗?_代码质量_05

接着,我们设置好显示名等信息,如下图所示。

别再说代码质量难评估了!SonarQube一键分析代码质量他不香吗?_代码质量_06

接着,选择本地导入项目信息,如下图所示。

别再说代码质量难评估了!SonarQube一键分析代码质量他不香吗?_Java_07

接着,创建一个 token 令牌,点击创建按钮,如下图所示。

别再说代码质量难评估了!SonarQube一键分析代码质量他不香吗?_代码质量_08

接着,我们选择 Maven 构建技术,随后 SonarQube 会自动为我们生成对应的命令,如下图所示。

别再说代码质量难评估了!SonarQube一键分析代码质量他不香吗?_Java_09

我们直接复制上面生成的 mvn 命令代码,直接到 quick-start-of-spock 项目的根目录运行。正常情况下,其是可以运行成功的,如下图所示。

别再说代码质量难评估了!SonarQube一键分析代码质量他不香吗?_代码质量_10

随后,我们直接回到 SonarQube 页面,可以看到 quick-start-of-spock 项目有数据了,如下图所示。

别再说代码质量难评估了!SonarQube一键分析代码质量他不香吗?_代码质量_11

扫描多模块项目

如果你的项目是多模块的结构,那么在运行分析命令之前需要先运行 mvn install 命令。同样在 SonarSource / sonar-scanning-examples 下面有 Sonar 官方提供的 maven-multimodule 示例项目,我们以这个项目为例来讲讲如何扫描多模块项目。

首先,在项目根目录下运行 mvn install 命令,成功后再运行 Sonar Scanner Maven 插件的分析命令,如下所示。

mvn clean verify sonar:sonar -Dsonar.login=sqxxxxxxxxxxxxxxd222e7adc

如果正常的话,那么命令行会输出成功的日志信息,如下图所示。

别再说代码质量难评估了!SonarQube一键分析代码质量他不香吗?_数据库_12

此时再打开 SonarQube 管理后台,可以看到多了一个名为 maven-multimodule 的项目,如下图所示。

别再说代码质量难评估了!SonarQube一键分析代码质量他不香吗?_Java_13

如果你想要在 Gradle、Ant 等构建的项目中使用 Sonar Scanner,可以参考官网的文档:Analyzing source code overview
https://docs.sonarqube.org/latest/analyzing-source-code/overview/

标签:SonarQube,代码,如下,Sonar,version,所示,不香
From: https://blog.51cto.com/u_16173732/6656978

相关文章

  • Git代码管理、提交、问题、仓库创建与管理
    第一章、在Github上创建仓库第1节、创建仓库进入https://github.com进入项目仓库:yourrepositories右侧点击:new按钮owner填写仓库名称Description填写项目描述public选择项目公开private选择项目不公开第2节、下载和安装Git客户端下载地址:https://git-scm.com/downloa......
  • 二、EAS客户端编辑界面常用代码
    2、EAS客户端编辑界面常用代码2.1 获取菜单getUIContext().get("UIClassParam")2.2客户端环境工具类//静态存储用户当前登录信息,登录的当前组织信息(ContextUtil在服务端使用)com.kingdee.eas.common.client.SysContext://获得当前用户的环境变量Contextctx=SysCont......
  • C#代码混淆工具ConfuserEx的使用
    1.运行ConfuserEx.exe 2.选择要加密的exe文件例如:我们要加密混淆测试.exe时可以参照如下操作:点击“+”:选择要加密的exe文件,点击“打开”点击打开后,会自动带出软件所在的目录,和输出目录,ConfUsed文件夹为混淆成功后之后新的exe的输出目录:3.加密配置Setting-->勾选上Pack......
  • 解决Android studio 代码提示功功能的具体操作步骤
    AndroidStudio代码提示功能简介AndroidStudio是一款非常强大的集成开发环境(IDE),它为开发者提供了许多便利的功能来提高工作效率和准确性。其中之一就是代码提示功能,它能够根据上下文自动补全代码,提供方法和属性的建议,减少代码编写的错误和不必要的时间浪费。代码提示的类型And......
  • 数据格式化代码
    原数据形式 优化后 独立代码://数据格式化代码privateMap<String,Set<String>>convertSpecList(List<String>specList){Map<String,Set<String>>specMap=newHashMap<>();//TODO参数校验if(Collectio......
  • 代码坏味道的变迁
    2018年,MartinFowler的《重构》第二版出版,距离第一版,已经19年了。为什么作者要出新版?通过分析两个版本的变化,可以探知端倪。这些变化,一方面体现了作者多年的思考和总结,另一方面也体现了技术潮流的演进。本文先从讨论坏味道的变迁开始。《重构》第一版中有22种坏味道,第二......
  • 代码的坏味道 《重构改善既有代码的设计》
    1.DuplicatedCode重复代码,在程序中多次出现的相同结构或功能的代码同一个类中的两个函数含有相同的表达式两个互为兄弟的子类中含相同的表达式相互独立的类中出现相同表达式2.LongMethod过长的函数难以理解及维护段函数或间接层具有很强的解释能力、共享能力和选择能......
  • 代码的坏味道
    代码坏味道:是指在代码之中潜在问题的警示信号。并非所有的坏味道所指示的确实是问题,但是对于大多数坏味道,均很有必要加以查看,并作出相应的修改。1. 重复的代码如果你在一个以上的地点看到相同的程序结构,那么当可肯定:设法将它们合而为一,程序会变得更好。同一个class内的两个......
  • 项目受源代码管理。向源代码管理注册此项目时出错。建议不要对此项目进行任何更改
    http://www.noobyard.com/article/p-uweyzjzb-cp.html编译Rocket.Windows.Framework项目的时候提示如题的错误,html 用记事本打开出错的几个项目的.csproj文件,把下面几行内容删掉就好了。vue   <SccProjectName>Svn</SccProjectName>  <SccLocalPath>Svn</SccLocalP......
  • ARIMA模型,ARIMAX模型预测冰淇淋消费时间序列数据|附代码数据
    全文下载链接:http://tecdat.cn/?p=22511最近我们被客户要求撰写关于ARIMAX的研究报告,包括一些图形和统计输出。标准的ARIMA(移动平均自回归模型)模型允许只根据预测变量的过去值进行预测。该模型假定一个变量的未来的值线性地取决于其过去的值,以及过去(随机)影响的值。ARIMAX模型......