代码质量检测神器——SonarQube

简介: SonarQube是一款代码检测工具,支持对Java、C#、、Python、Go、Html、JavaScript、CSS等代码的质量检测。因为SonarQube依赖数据库,可以用MySQL或PostgreSQL。SonarQube7.9以上版本不再支持MySQL,所以这里用PostgreSQL。

SonarQube是一款代码检测工具,支持对Java、C#、、Python、Go、Html、JavaScript、CSS等代码的质量检测。


因为SonarQube依赖数据库,可以用MySQL或PostgreSQL。SonarQube7.9以上版本不再支持MySQL,所以这里用PostgreSQL。


1、安装PostgreSQL


(1)拉取PostgreSQL镜像

docker pull postgres:11

(2)创建PostgreSQL挂载目录

mkdir -p /usr/local/postgresql/postgresql
mkdir -p /usr/local/postgresql/data


(3)启动PostgreSQL

docker run -d --name postgres -p 5432:5432 -v /usr/local/postgresql/postgresql:/var/lib/postgresql -v /usr/local/postgresql/data:/var/lib/postgresql/data -v /etc/localtime:/etc/localtime:ro -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -e POSTGRES_DB=sonar -e TZ=Asia/Shanghai --restart always --privileged=true postgres:11


2、安装SonarQube


(1)拉取SonarQube镜像

docker pull sonarqube:8.9.2-community


(2)创建SonarQube挂载目录


mkdir -p /usr/local/sonarqube/extensions
mkdir -p /usr/local/sonarqube/logs
mkdir -p /usr/local/sonarqube/data


(3)启动SonarQube,同时连接数据库(PostgreSQL容器实例)


docker run -d --name sonarqube -p 9000:9000 --link postgres -v /usr/local/sonarqube/extensions:/opt/sonarqube/extensions -v /usr/local/sonarqube/logs:/opt/sonarqube/logs -v /usr/local/sonarqube/data:/opt/sonarqube/data -e SONARQUBE_JDBC_URL=jdbc:postgresql://postgres:5432/sonar -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar --restart always --privileged=true sonarqube:8.9.2-community


(4)访问SonarQube


SonarQube访问地址为http://宿主机ip:9000,初次访问SonarQube,速度比较慢(初次启动需要初始化数据库),需要耐心等待下。

可以通过docker logs sonarqube查看SonarQube是否启动


打开后就是登录页面,默认用户名密码为admin/admin,初次登录需要重置密码。刚开始SonarQube的项目(projects)栏目是空的,需要新增项目或者主动检测项目后才会出现项目列表。


(5)汉化


SonarQube默认是英文版,需要汉化的可以在 https://github.com/xuhuisheng/sonar-l10n-zh/tags 下载对应版本汉化包(.jar文件),放到SonarQube挂载目录/usr/local/sonarqube/extensions/plugins中,重启SonarQube实例即可


3、用SonarQube检测Maven项目


(1)在maven的conf/settings.xml中添加配置


    <profile>
        <id>sonar</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <!-- SonarQube登录用户名 -->
            <sonar.login>admin</sonar.login>
            <!-- SonarQube登录密码 -->
            <sonar.password>Wy0RCBI2ts</sonar.password>
            <!-- SonarQube访问地址 -->
            <sonar.host.url>http://10.246.131.47:9000</sonar.host.url>
            <!-- 代码分析包括哪些文件需要分析,英文逗号分隔  -->
            <sonar.inclusions>**/*.java,**/*.xml</sonar.inclusions>
        </properties>
    </profile>
    <activeProfiles>
        <activeProfile>sonar</activeProfile>
    </activeProfiles>


(2)在需要检测的maven项目跟目录下执行mvn sonar:sonar,执行完再返回到SonarQube管理台,会发现出现了一个新项目及其检测结果的快照:


17.png


点进项目,就可以查看具体的Bug、漏洞、安全点、坏味道等检测结果及具体代码了:


18.png



相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
传感器 机器学习/深度学习 编解码
最新综述!基于视觉的自动驾驶环境感知(单目、双目和RGB-D)
目相机使用来自单个视点的图像数据作为输入来估计对象深度,相比之下,立体视觉是基于视差和匹配不同视图的特征点,深度学习的应用也进一步提高了准确性。此外,SLAM可以建立道路环境模型,从而帮助车辆感知周围环境并完成任务。本文介绍并比较了各种目标检测和识别方法,然后解释了深度估计的发展,并比较了基于单目、立体和RGB-D传感器的各种方法,接下来回顾并比较了SLAM的各种方法。最后总结了当前存在的问题,并提出了视觉技术的未来发展趋势。
最新综述!基于视觉的自动驾驶环境感知(单目、双目和RGB-D)
|
缓存 运维 容灾
入行5年,谈谈我在阿里做测试开发的经验
作者在阿里一直从事测试开发相关工作,这几年学习很多、收获很多,作者希望给还在该方向摸爬滚打的同学一些启发和方向。
|
关系型数据库 MySQL Linux
SonarQube启动不了的问题解决
SonarQube启动不了的问题解决
SonarQube启动不了的问题解决
|
10月前
|
人工智能 自然语言处理 监控
基于DeepSeek R1改进的AI安全模型!MAI-DS-R1:微软开源AI安全卫士,敏感话题响应率高达99.3%
微软开源的MAI-DS-R1是基于DeepSeek R1改进的AI模型,通过后训练优化将敏感话题响应率提升至99.3%,同时将有害内容风险降低50%,保持原版推理能力并增强多语言支持。
1249 3
基于DeepSeek R1改进的AI安全模型!MAI-DS-R1:微软开源AI安全卫士,敏感话题响应率高达99.3%
|
安全 JavaScript Java
记一次网站全站http升级为https的过程,websocket : ws升级为wss遇到的问题等
记一次网站全站http升级为https的过程,websocket : ws升级为wss遇到的问题等
2789 0
记一次网站全站http升级为https的过程,websocket : ws升级为wss遇到的问题等
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
640 5
|
Python
python函数调用时参数类型错误
【7月更文挑战第11天】
610 1
|
Rust 前端开发 JavaScript
IM跨平台技术学习(十):快速对比跨平台框架Electron、Flutter、Tauri、React Native等
在本文中,我们将比较五种流行的桌面应用程序开发框架:Electron、Flutter、Tauri、React Native 和 Qt,希望可以帮助你根据项目需求做出明智的技术选型决策。
1172 2
|
消息中间件 数据可视化 Kafka
mac 使用 docker 安装单机版 kafka, 亲测有效
mac 使用 docker 安装单机版 kafka, 亲测有效
2669 1
mac 使用 docker 安装单机版 kafka, 亲测有效
|
Linux Go
Linux 安装指定版本golang
Linux 安装指定版本golang
867 0