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 ...
随机推荐
- python 面向对象专题(二):类的空间问题、类与对象之间的关系、类与类之间的关系
https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 ...
- C# - 设计- Struct与Class的选择
选择Struct的原则 该类型的实例较小且通常为短生存期,或者通常嵌入到其他对象中. 它以逻辑方式表示单个值,类似于基元类型( int .等 double ). 它的实例大小为16字节. 它是不可变的 ...
- Python实现性能自动化测试的方法【推荐好文】
1.什么是性能自动化测试? ◆ 性能 △ 系统负载能力 △ 超负荷运行下的稳定性 △ 系统瓶颈 ◆ 自动化测试 △ 使用程序代替手工 △ 提升测试效率 ◆ 性能自动化 △ 使用代码模拟大批量用户 △ ...
- 数据结构C语言实现----清空、销毁一个栈
代码如下: #include<stdio.h> #include<stdlib.h> typedef struct { char *base; char *top; int s ...
- Python Ethical Hacking - BeEF Framework(1)
Browser Exploitation Framework. Allows us to launch a number of attacks on a hooked target. Targets ...
- 关于Java8的精心总结
前言 最近公司里比较新的项目里面,看到了很多关于java8新特性的用法,由于之前自己对java8的新特性不是很了解也没有去做深入研究,所以最近就系统的去学习了一下,然后总结了一篇文章第一时间和大家 ...
- javascript : 点击按钮,把某标签中的内容复制到剪贴板
需求如题. 静态页面如下. 需要的库:jquery(不用应该也能做). 浏览器:PC chrome 68 Mobile MIUI9.5(Android 7) <p>1.用电脑打开网址:&l ...
- 抛出这8个问题,检验一下你到底会不会ThreadLocal,来摸个底~
0.问题 和Synchronized的区别 存储在jvm的哪个区域 真的只是当前线程可见吗 会导致内存泄漏么 为什么用Entry数组而不是Entry对象 你学习的开源框架哪些用到了ThreadLoca ...
- STL源码剖析:仿函数
仿函数就是函数对象 函数对象: 重载了operator()的类对象 使用起来和普通函数一致,所以称为函数对象或是仿函数 STL中对于仿函数的参数进行了特殊处理,定义了两个特殊类,类里面只有类型定义 一 ...
- DJANGO-天天生鲜项目从0到1-004-用户模块-个人中心页
本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...