sonarqube静态扫描代码环境搭建及使用(本地环境)
一、背景
目标:在macbook机器本地环境搭建sonarqube服务,并对本地maven项目代码进行静态扫描,将扫描结果提交到sonarqube服务中,并在web页面中展示出来。
静态代码扫描可以发现的问题:
a、数组越界:例如,数组长度为10,arr.length=10,但出现arr[10]这种越界
b、大量重复代码块
c、死循环
d、定义的变量未使用
e、过高的代码复杂度
f、不可达的僵尸代码
g、空指针引用
h、缓冲区溢出
i、部分内存泄露问题
j、变量类型不匹配
k、使用未初始化的变量
二、搭建步骤
1、下载sonarqube软件
下载地址:https://binaries.sonarsource.com/Distribution/sonarqube/
下载历史版本sonarqube6.7.5的zip压缩包,因为高版本不稳定。解压后,在/bin/macosx-universal-64文件夹下执行sonar.sh console即可运行,访问http://localhost:9000,以默认的admin/admin即可登录进系统页面,此访问地址即是sonar扫描结果的展示系统。
注意:以上的前提是在jdk1.8环境,此时采用的是sonarqube的内置数据库,不支持数据的迁移和维护,一般不用内置数据库,连接外部数据库需要修改conf/sonar.properties文件
2、搭建mysql数据库环境(这里以mysql为例)
sonarqube6.7.5可支持的mysql版本为5.6、5.7,其他版本均不适配!在本地电脑上搭建相应版本的mysql数据库。
3、修改sonarqube的数据库连接配置
修改conf/sonarqube.properties文件,该文件可修改访问端口(默认是9000)和指定连接外部数据库(默认是内置数据库)
修改以下几项即可:
sonar.jdbc.username
sonar.jdbc.password
sonar.jdbc.url
sonar.jdbc.driverClassName
#--------------------------------------------------------------------------------------------------
# DATABASE
#
# IMPORTANT:
# - The embedded H2 database is used by default. It is recommended for tests but not for
# production use. Supported databases are MySQL, Oracle, PostgreSQL and Microsoft SQLServer.
# - Changes to database connection URL (sonar.jdbc.url) can affect SonarSource licensed products.# User credentials.
# Permissions to create tables, indices and triggers must be granted to JDBC user.
# The schema must be created first.
sonar.jdbc.username=root
sonar.jdbc.password=mydatabasepassword
sonar.jdbc.driverClassName=com.mysql.jdbc.Driver#----- Embedded Database (default)
# H2 embedded database server listening port, defaults to 9092
#sonar.embeddedDatabase.port=9092#----- MySQL 5.6 or greater
# Only InnoDB storage engine is supported (not myISAM).
# Only the bundled driver is supported. It can not be changed.
#sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.url=jdbc:mysql://23.60.22.121:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
.....
.....
.....
修改完毕重启即可。
4、本地代码扫描结果自动提交到sonarqube服务
1)由于使用maven命令执行代码扫描,所以修改本地maven的conf/settings.xml文件,将以下内容添加到该文件中并保存。
<pluginGroups><pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups><profiles><profile><id>sonar</id><activation><activeByDefault>true</activeByDefault></activation><properties><sonar.host.url>http://localhost:9000</sonar.host.url></properties></profile></profiles>
2)在本地IDE工具中执行mvn clean verify sonar:sonar命令,即可下载相关插件,并将代码扫描结果提交到sonarqube服务。
扫描结果展示:
原理图:
sonarqube静态扫描代码环境搭建及使用(本地环境)相关推荐
- 本机php环境搭建教程:windows环境下wampserver的配置教程——超级详细
转载自:http://youchunyan5.blog.163.com/blog/static/5896062020123474456352/ 本机php环境搭建教程:windows环境下wampse ...
- 嵌入式linux开发环境搭建——VirtualBox虚拟机网络环境解析
嵌入式linux开发环境搭建--VirtualBox虚拟机网络环境解析 本博文转自:Pandoras Box http://blog.csdn.net/yxc135/article/details/8 ...
- appium环境搭建python_python2.7+appium环境搭建
实现android自动化 目录 1.环境准备.安装包准备 2.安装 3.验证环境搭建成功 1.环境准备.安装包准备 第一步:环境准备: java环境 python环境 第二步:准备安装包 Node.j ...
- java后台环境搭建_后端-java环境搭建
java环境搭建 开发工具:idea/eclipse/myeclipse + mysql/oracle/sqlserver/postgresql + tomcat6/7/8/9. 下面以eclipse ...
- Hadoop环境搭建教学(一)运行环境,集群规划介绍;
文章目录 前言 一.Hadoop的三种运行环境 二.集群规划 三.需要的基本软件安装 下期见 前言 Hadoop的运行环境可以是在Windows上,也可以在linux上,但在Windows上运行效率很 ...
- ESP32s3-EYE ESP-IDF环境搭建Ubuntu18.04 Micropython环境搭建Pycharm 物联网
提示:该项目建立于ubuntu18.04版本,esp-idf版本为4.4.1,ESP32S3-EYE开发板由乐鑫公司提供,在此表示感谢.项目中的rPPG技术来源于github上的nasir,本项目所有 ...
- python服务器环境搭建_服务器python环境搭建
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python搭建服务器以快捷著称,实际上,我们也可以使用python搭建简易的服 ...
- ubuntu linux编译环境搭建,Ubuntu14.04开发环境搭建
Ubuntu14.04开发环境搭建 嵌入式开发过程中很重要的一环节就是开发环境的搭建,开发环境搭建的好可以很好的提高开发效率.其中关键的一部就是挂载运行程序,对于程序的挂载运行需要借助NFS服务器,下 ...
- linux php环境搭建教程,linux php环境搭建教程
linux php环境搭建的方法:首先获取相关安装包:然后安装Apache以及mysql:接着修改配置文件"httpd.conf":最后设置环境变量和开机自启,并编译安装PHP即可 ...
最新文章
- 线性方程 最小二乘解 SVD分解
- python学习:语句
- 常用的函数式接口_Consumer接口
- ASP.NET 连接MySql数据库
- ASP.NET Core SignalR:集线器Hub
- QT+vs2010下改变可执行程序的图标
- 数据结构与算法--9.常见时间复杂度及其之间的关系
- python结构化数据_python新手入门必备—— 使用json保存结构化数据
- Zookeeper 教程:Zookeeper作为Hadoop和Hbase的重要组件,为分布式应用程序协调服务
- Ambari ambari 集群及组件
- oracle清空数据库命令行,使用命令行手动卸载Oracle Database 11gR2
- liferay 去掉 portlet:actionUrl 跳转时的message
- widows下 python环境变量配置
- php7.1 win7,win7 配置AMP环境(apache2.4.39 + php7.1.28)
- cadence SPB16.6原理图库(.olb)集合的库内容列表2
- 网络规划设计师教程知识点精讲之计算机网络分类
- CORE Transport Technologies宣布蓝牙航空货物跟踪系统重大升级
- python层次分析法案例_在R语言中使用层次分析法-案例1
- Android四大组件——BroadcastReceiver普通广播、有序广播、拦截广播、本地广播、Sticky广播、系统广播
- 决策树ID3、C4.5和CART算法总结,及案例计算
热门文章
- [转]VC++中对文件的写入和读取
- Linux 下mysql 安装完成后,输入mysql 无法进入问题
- 马克.扎克伯格的执行力
- 用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践
- 【bzoj3309】DZY Loves Math 莫比乌斯反演+线性筛
- 239 Sliding Window Maximum 滑动窗口最大值
- oracle 内置函数(三)日期函数
- 如何用Windows Live Writer写网易博客
- end_form_tag 已经在rails2.x中去掉了
- Python语言编程之LEGB变量作用域法则