一文教你玩转SonarQube平台搭建(超详细,图文并茂)

一、简介

  • SonarQube 介绍

SonarQube 是一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题。同时,它提供了丰富的插件,支持多种语言的检测,如Java、Python、Groovy、C、C++等几十种编程语言的检测。它主要的核心价值体现在如下几个方面: 

(1) 检查代码是否遵循编程标准:如命名规范,编写的规范等。

(2) 检查设计存在的潜在缺陷:SonarQube 通过插件 Findbugs、Checkstyle 等工具检测代码存在的缺陷。

(3) 检测代码的重复代码量:SonarQube 可以展示项目中存在大量复制粘贴的代码。

(4) 检测代码中注释的程度:源码注释过多或者太少都不好,影响程序的可读可理解性。

(5) 检测代码中包、类之间的关系:分析类之间的关系是否合理,复杂度情况。

  • SonarQube 平台是由 4 个部分组成

① SonarQube Server

② SonarQube Database

③ SonarQube Plugins

④ SonarQube Scanner 

  • 3、SonarQube 工作流程

SonarQube 在进行代码质量管理时,会从下图 所示的七个纬度来分析项目的质量。

 

SonarQube 需要数据库的支持,用于存储检测项目后的分析数据,同时为了实现可持续监测,还需要持续集成工具(如Jenkins)的支持,在构建版本前,通过Jenkins+Sonar 插件执行项目分析指令,最终的结果会通过SonarQube 服务器的Web 页面展示。下图是使用SonarQube做代码持续审查的流程图:

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

二、安装

  • 环境准备

(1) sonarqube-7.9.1

(2) sonar-scanner-4.0.0.1744-linux

(3) Sqlserver(sonar7.9之后版本不支持mysql,oracle必须使用ojdbc7或者更高版本)

(4) jenkins 2.138

(5) jdk-12.0.1(jdk必须使用jdk11或者是更高版本)

(6) CentOS 7

注意:sonar的安装和启动不用root用户,而是用低权限的linux用户,建议自建用户sonar。 

  • SonarQube安装

(1) 数据库配置

Sqlserver新建数据库sonar

注意:排序规则必须选用Chinese_PRC_CS_AS,否则数据库初始化不成功

(2) SonarQube配置

下载 sonarqube-7.9.1 后解压。 

按如下配置修改 $SONAR_HOME/conf/sonar.properties 文件,配置数据库信息:

sonar.jdbc.username=sa

sonar.jdbc.password=Sqlserver123

sonar.jdbc.url=jdbc:sqlserver://10.102.7.210;databaseName=sonar

#sonar访问地址端口可根据情况修改或者保持默认

sonar.web.port=9000

  • 启动SonarQube

进入sonar的bin目录($SONAR_HOME/bin/linux-x86-64),执行脚本 sonar.sh start

浏览器中访问 http://10.102.7.218:9000/ ,界面如下:

默认登录账户 admin 密码 admin,可登录后修改密码。 

  • 配置sonarqube开机启动

(1) 添加sonar环境变量

修改 ~/.bash_profile

SONAR_HOME=/usr/soft/sonarqube-7.9.1/

PATH=PATH:$SONAR_HOME/bin/linux-x86-64

export PATH SONAR_HOME

(2) /etc/init.d 下增加sonar 文件

#!/bin/sh

# chkconfig: 345 96 10

# description: SonarQube system

#

# Provides: sonar

# Default-Start: 3 4 5

# Default-Stop: 0 1 2 6

# Short-Description: SonarQube system

# Description: SonarQube system

 

/usr/bin/sonar $*

(3) 加入开机启动列表

sudo ln -s $SONAR_HOME/bin/linux-x86-64/sonar.sh /usr/bin/sonar

sudo chmod 755 /etc/init.d/sonar

sudo chkconfig --add sonar

  • 汉化

使用admin/admin登录,选择配置,再选择应用市场,在搜索框内输入“Local”,选择“Chinese Pack”点击安装。

  • 配置 Jenkins

Jenkins 安装 SonarQube Scanner 插件

“系统管理”-->“插件管理”-->搜索“SonarQube scanner”-->点击安装即可

注意:此处需要注意jenkins版本是否支持sonar安装,如果不支持请按照提示升级到相应的版本。 

  • Jenkins 配置 SonarQube Scanner 插件

在 Jekins 中,进入 系统管理->系统设置->SonarQube servers: 勾选 Enable injection of SonarQube server configuration ... 选项。输入:

Name: 可自定义。 

Server URL: SonarQube 服务器的 URL。 

Server authentication token: 点击 Add 配置凭证:类型: 选择 GitLab API token。API token获取方式:登录sonarqube,点击右上角“用户图标”-->我的账户-->安全-->填写令牌名称(随意)-->生成复制即可

如果点击 Add 没有反应,建议更换浏览器,是浏览器兼容性问题。

全局工具配置

进入 系统管理->全局工具配置->SonarQube Scanner: 点击 SonarQube Scanner installations...并配置 SonarQube Scanner。

  • 为jenkins任务增加sonar检查

Build Environment (构建环境): 勾选 Prepare SonarQube Scanner environment。 

Post Steps (发布步骤): 点击 Add post-build step,添加 Execute SonarQube Scanner。

Task to run: 输入 scan,即分析代码,此处我们采用-X代表debug模式。

Analysis properties: 输入以下内容:

配置项说明:

JDK为sonar_scanner所依赖的jdk版本 

#sonar工程标识,随意输入不重复有代表意义即可

sonar.projectKey=bi_build_sonar 

#sonar工程标识,随意输入不重复有代表意义即可

sonar.projectName=bi_build_sonar 

#sonar工程版本号

sonar.projectVersion=1.0 

#要分析的工程列表,多个用逗号分隔

sonar.modules=com.yss.bi.cml.client,com.yss.bi.common,portal-app,portal-web,com.yss.bi.iae 

#源代码路径

sonar.sources=src/main/java 

#class文件路径

sonar.java.binaries=target/classes

测试 Jenkins 任务

构建项目:点击立即构建。

执行成功后,打开 SonarQube 的地址,即可看到代码检查结果。 

 至此介绍结束,如果大家还想深入学习,可以扫描下图关注本人公众号,本人将在上面分享更多学习资料。或者有啥疑问可以直接给我留言。

 

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spark是一个快速通用的集群计算框架,它可以处理大规模数据,并且具有高效的内存计算能力。Spark可以用于各种计算任务,包括批处理、流处理、机器学习等。本文将带你了解Spark计算框架的基本概念和使用方法。 一、Spark基础概念 1. RDD RDD(Resilient Distributed Datasets)是Spark的基本数据结构,它是一个分布式的、可容错的、不可变的数据集合。RDD可以从Hadoop、本地文件系统等数据源中读取数据,并且可以通过多个转换操作(如map、filter、reduce等)进行处理。RDD也可以被持久化到内存中,以便下次使用。 2. Spark应用程序 Spark应用程序是由一个驱动程序和多个执行程序组成的分布式计算应用程序。驱动程序是应用程序的主要入口点,它通常位于用户的本地计算机上,驱动程序负责将应用程序分发到执行程序上并收集结果。执行程序是运行在集群节点上的计算单元,它们负责执行驱动程序分配给它们的任务。 3. Spark集群管理器 Spark集群管理器负责管理Spark应用程序在集群中的运行。Spark支持多种集群管理器,包括Standalone、YARN、Mesos等。 二、Spark计算框架使用方法 1. 安装Spark 首先需要安装Spark,可以从Spark官网下载并解压缩Spark安装包。 2. 编写Spark应用程序 编写Spark应用程序通常需要使用Java、Scala或Python编程语言。以下是一个简单的Java代码示例,用于统计文本文件中单词的出现次数: ```java import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import java.util.Arrays; import java.util.Map; public class WordCount { public static void main(String[] args) { SparkConf conf = new SparkConf().setAppName("WordCount").setMaster("local"); JavaSparkContext sc = new JavaSparkContext(conf); JavaRDD<String> lines = sc.textFile("input.txt"); JavaRDD<String> words = lines.flatMap(line -> Arrays.asList(line.split(" ")).iterator()); Map<String, Long> wordCounts = words.countByValue(); for (Map.Entry<String, Long> entry : wordCounts.entrySet()) { System.out.println(entry.getKey() + " : " + entry.getValue()); } sc.stop(); } } ``` 3. 运行Spark应用程序 将编写好的Spark应用程序打包成jar包,并通过以下命令运行: ```bash spark-submit --class WordCount /path/to/wordcount.jar input.txt ``` 其中,--class参数指定应用程序的主类,后面跟上打包好的jar包路径,input.txt是输入文件的路径。 4. 查看运行结果 Spark应用程序运行完毕后,可以查看应用程序的输出结果,例如上述示例中的单词出现次数。 以上就是Spark计算框架的基本概念和使用方法。通过学习Spark,我们可以更好地处理大规模数据,并且提高计算效率。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值