SonarQube 扫描 Java 代码
SonarQube 扫描 Java 代码
环境
需要提前安装好 SonarQube7.9,安装步骤见 Docker 安装 SonarQube
步骤
填写项目名 my_project
填写token名 my_token
生成一个秘钥,后面用的到。
安装 sonarqube 客户端,用户扫描代码,先创建安装目录
mkdir -p /usr/local/sonarqube/sonar-scanner-cli && cd /usr/local/sonarqube/sonar-scanner-cli
下载客户端
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873-linux.zip
解压
unzip sonar-scanner-cli-4.2.0.1873-linux.zip
在 /etc/profile
的末尾添加环境变量
export SONAR_SCANNER_HOME=/usr/local/sonarqube/sonar-scanner-cli/sonar-scanner-4.2.0.1873-linux
export PATH=$SONAR_SCANNER_HOME/bin:$PATH
环境变量立即生效
source /etc/profile
测试客户端是否配置正确
sonar-scanner -v
创建工作目录
mkdir -p /usr/local/sonarqube/workspace && cd /usr/local/sonarqube/workspace
拉取一个开源项目 jmx_exporter 做测试
git clone https://github.com/prometheus/jmx_exporter.git
最终,我的代码目录(因为一直超时,我手动下载了代码):
/usr/local/sonarqube/workspace/jmx_exporter-master
在项目目录创建扫描配置文件 /usr/local/sonarqube/workspace/jmx_exporter-master/sonar-project.properties
,各配置项如下:
# 项目名,如果项目名不存在会自动创建该项目
sonar.projectKey=my_project
# 源码路径,设置为当前目录
sonar.sources=.
# SonarQube 访问地址,根据实际情况填写
sonar.host.url=http://192.168.10.227:9000
# token,在 SonarQube 中创建的 token,只有 SonarQube 开起了强制用户认证,才需要 token,默认情况下,强制用户认证是关闭的。
sonar.login=c4765957e5ada82ebe21a7c2e1f56afbff4059d3
# 语言类型
sonar.language=java
# 二进制文件目录,就是 .class 文件的目录,只有部分项目需要该配置
sonar.java.binaries=collector/target/classes,jmx_prometheus_httpserver/target/classes,jmx_prometheus_javaagent/target/classes
# 源代码编码格式
sonar.sourceEncoding=UTF-8
进入项目目录
cd /usr/local/sonarqube/workspace/jmx_exporter-master/
需要先编译项目,主要是为了生成 .classs 文件
mvn clean package
执行扫描
sonar-scanner
待扫描结束,可以在浏览器看到扫描结果
安装扫描插件
扫描某种语言,需要安装对应语言的插件,如果没有,可以去应用市场安装该插件,例如 Java 需要安装 SonarJava 插件。
这个插件不小,耐心等待,安装完毕会提示重启。
# 也可以提前下载好这些插件包,放到下面任意目录
# 插件会被下载到这个目录
${SONAR_HOME}/extensions/downloads
# 重启后,插件会被安装到这个目录
${SONAR_HOME}/extensions/plugins
重启 SonarQube
docker-compose restart
SonarQube 扫描 Java 代码的更多相关文章
- sonarqube扫描安卓代码
代码才用https://github.com/liwanlei/bilibili-android-client 配置: build.gralde配置 buildscript { repositorie ...
- Sonar规范扫描Java代码暴露的问题
字符串和封装类型应使用 equals()进行比较 例如java.lang.Integer使用引用等于==或!=,因为它不是比较实际值,而是比较内存中的位置. String firstName = ge ...
- sonar扫描java、js、jsp技术
最近在弄sonar扫描的事情,之前一直只能扫描java代码,这样统计出来的数据上报领导很多开发人员不服(说我不用写jsp了不用写js了?), 那么好,于是乎继续整sonar,在官网中看到sonar其实 ...
- SonarQube部署及代码质量扫描入门教程
一.前言 1.本文主要内容 CentOS7下SonarQube部署 Maven扫描Java项目并将扫描结果提交到SonarQube Server SonarQube扫描报表介绍 2.环境信息 工具/环 ...
- 静态代码扫描之阿里java代码规范IDEA插件
前言 2017年2月9日,首次公布<阿里巴巴Java开发手册>; 2017年9月25日,阿里巴巴集团发布了<阿里巴巴Java开发手册>PDF终极版; 2017年10月14日,在 ...
- 阿里巴巴Java开发手册及Java代码规约扫描eclipse插件
一.github地址: https://github.com/alibaba/p3c 二..eclipse插件的安装 此处示例采用eclipse,版本为 Neon.1 Release RC3 (4.6 ...
- Azure DevOps Server(TFS 2019) 中的SonarQube扫描任务出现错误:AppTest.java can't be indexed twice
SonarQube错误描述 将一个Maven示例程序导入到Azure DevOps的待库中,执行SonarQube扫描过程时, DevOps Server提示下面的错误信息: [ERROR] Fail ...
- SonarQube安装Java扫描插件
近段时间在研究sonarqube,成功扫描python项目,但是扫描java项目失败. 在网上查询到,扫描java项目需要安装Java插件. 如下图: 而我在最新的sonarqube中搜索java,没 ...
- Jenkins 使用 SonarQube 扫描 Coding
Jenkins 使用 SonarQube 扫描 Coding 系统环境: Jenkins 版本:2.176 SonarQube 版本:7.4.0 一.SonarQube 介绍 1.SonarQub ...
随机推荐
- JavaScript动画实例:曲线的绘制
在“JavaScript图形实例:曲线方程”一文中,我们给出了15个曲线方程绘制图形的实例.这些曲线都是根据其曲线方程,在[0,2π]区间取一系列角度值,根据给定角度值计算对应的各点坐标,然后在计算出 ...
- 用前端姿势玩docker【一】Docker通俗理解常用功能汇总与操作埋坑
前言 首先一句话表达个人对docker的理解:与传统虚拟技术基于硬件及物理资源的虚拟化相比,Docker更加轻量化,docker为基于操作系统或内核级别的虚拟化,并且提供了从各种机制与操作以满足从开发 ...
- python基础算法
一.简介 定义和特征 定义:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时 ...
- smartJQueryZoom(smartZoom) 的使用方法
smartZoom 是一个我很喜欢用的库. 但是这个库有一些不完善的地方. 比如BUG. 比如使用上可能遇到的问题. <article> <div id="zoom_box ...
- Linux好学吗?怎么自学Linux?6个值得你去学习Linux的理由!
两个多月前,我对日常工作做出了一个非常重要的决定-我决定从Windows切换到Linux,将其作为个人和办公笔记本电脑的主要系统.除了开始时一些小的驱动程序问题之外,切换非常平稳,我不会考虑返回.如果 ...
- canvas学习01
canvas 必须指定宽高,确定可绘图区域的大小 canvas标签里写的是浏览器不支持canvas时展示的内容 <canvas id="drawing" width=&quo ...
- mysql查看各表占磁盘空间
select TABLE_NAME, concat(truncate(data_length/1024/1024,2),' MB') as data_size, concat(truncate(ind ...
- ES数据库重建索引——Reindex(数据迁移)
应用背景: 1.当你的数据量过大,而你的索引最初创建的分片数量不足,导致数据入库较慢的情况,此时需要扩大分片的数量,此时可以尝试使用Reindex. 2.当数据的mapping需要修改,但是大量的数据 ...
- REST是什么?RESTFul又是什么?这二者的关系是怎样的?
REST(一种软件架构风格) 全称:Representational State Transfer 含义:(表述性 状态 转移) 是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可 ...
- macOS 遇到 svnadmin无法使用的情况
首先,我在网上查了很多资料,大多数开发者都是表明了mac内置svn,然后直接使用svnadmin来创建仓库,但是我用命令行敲入svnadmin却显示找不到svnadmin.最开始,有个资料说用whic ...