代码质量检测-Sonar

2023-11-12

一。 Sonar简介

 sonarqube系统是一个代码质量检测工具 由以下四个组件组成(https://docs.sonarqube.org/display/SONAR/Architecture+and+Integration)

   1》一个sonarqube服务器 包含三个子进程(web服务(界面管理),搜索服务 计算引擎服务(写入数据库))

   2》一个sonarqube数据库 配置sonarqube服务

   3》多个sonarqube插件 位于解压目录 extensions\plugins目录

   4》一个或者多个sonarqube scanners 用于分析特定的项目


使用SonarQube(简称SQ)工作流程

 开发者使用开发工具(eclipse,ide)上传代码到SCM(源代码管理器)    系统自动同步代码到某个位置 sonarqube scanners 扫描该代码检查质量 将分析结果 将分析结果推送到SQServer 存储在SQ数据库 用户可以使用eclipse插件sonarlint来同步sonarqube服务器配置(java和js版本等)可以实时在线分析



二。SonarQube安装

  sonarqube官方文档(文档https://docs.sonarqube.org) 

安装过程参考(https://docs.sonarqube.org/display/SONAR/Setup+and+Upgrade)

1》下载并且解压

下载 sonarqube-5.4  点击文档 https://docs.sonarqube.org/display/SONAR/Get+Started+in+Two+Minutes 的download page 进入下载  
这里使用window解压后进入 sonarqube-5.4\bin\windows-x86-64目录
点击 StartSonar.bat运行 
浏览器输入地址 http://localhost:9000/ 输入账号密码 admin/admin 进入 

 2》修改SQ默认的数据库

 sq支持多种数据库引擎 默认内嵌了一个数据库 默认打开端口9092 这里使用mysql替代
启动任意mysql 创建一个数据库 名字:sonar

找到conf/sonar.properties  将配置文件以下几项打开

 #----- MySQL 5.x
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?

useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=root
sonar.jdbc.password=123456
重新启动 使用客户端连接mysql 的sonar库发现多了很多表

 3》 SQ汉化

 点击官方文档左侧的Plugins 进入右侧右下角的Localization 点击Chinese 进入了github地址(
https://github.com/SonarQubeCommunity/sonar-l10n-zh) 对应版本是

SonarQube 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7
sonar-l10n-zh 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19
SonarQube 5.4 5.5 5.6          
sonar-l10n-zh 1.9 1.10 1.11          
SonarQube 4.0 4.1            
sonar-l10n-zh 1.7 1.8            
SonarQube 3.1 3.2 3.3 3.4 3.5 3.6 3.7  
sonar-l10n-zh 1.0 1.1 1.2 1.3 1.4 1.5 1.6
查看对应的版本 5.4需要1.9的sonar-l10n-zh  点击releases下载对应版本

将下载好的jar 置入  extensions\plugins目录下

重启服务 访问http://localhost:9090发现变成中文版

另外一种方式 也可以登录系统  点击配置-系统-更新中心管理插件 可以在线搜索安装chinese插件


三。Sonar分析项目

1》命令行使用SonarQube Scanner分析

    进入官方文档 点击Scanners 点击子菜单 Analyzing with SonarQube Scanner 根据官方向导进行配置

 点击 文档顶部的 不同系统版本 这里是  Windows 64 bit   下载后 解压

设置  sonar-scanner-3.0.3.778-windows\bin 设置到环境变量PATH中

修改 conf/sonar-scanner.properties  指定sonar qube服务器的地址 默认如果按照在本机无需修改 

sonar.host.url=http://localhost:9000
找一个有源代码的项目 比如我有个项目叫kafka 在项目的根目录 添加一个配置文件sonar-project.properties 添加内容
# 当前项目实例的唯一表示
sonar.projectKey=kafka
# 显示在sonarqube 界面上的项目名称
sonar.projectName=kafka
sonar.projectVersion=1.0
 
# 相对于当前配置文件目录 下的源代码目录 不管什么平台路径分隔符只能有  / 不能使用\
sonar.sources=src/main/java
 
# 源代码的字符集
#sonar.sourceEncoding=UTF-8
进入kafka项目根目录 执行命令  sonar-scanner  出现 执行 EXECUTION SUCCESS 表示成功
成功后进入qb ui界面 http://localhost:9000 可以看到多出一个kafka的项目列表

点击项目名称 进入 可以看到该项目的所有统计 包括存在问题

点击问题进入 就能看到对应的问题列表

eclipse ide安装sonarlint 实时监测代码质量 插件地址https://github.com/SonarSource/sonarlint-eclipse 可以使用markerplace搜索安装 

安装使用mars(4.5.2) 无论是markerplace还是下载包离线安装都无法安装 安装Eclipse Java Oxygen版本 可以在markerplace搜索安装 


查找视图 SonarQube Servers 点击 Connect to a SonarQube server


选中 sonarqube点击下一步  输入url http://localhost:9000 输入用户名和密码 (admin/admin)  点击完成 抛出错误

Starting SonarLint for Eclipse 3.3.1.201712071600
The following plugins do not meet the required minimum versions, please upgrade them on your SonarQube server:
  java (installed: 3.13.1, minimum: 4.0)
  javascript (installed: 2.11, minimum: 2.14)
因为sonarqube使用 sonar-java插件来扫描java代码 使用 sonar-javascript插件扫描js代码 控制质量 这里我使用的sonarqube必须是 5.6版本 默认的java插件时3.13.1 (https://github.com/SonarSource/sonar-java)最小必须使用4.0 js插件时 2.11 最小必须是 2.14 (https://github.com/SonarSource/SonarJS)可以去github上搜索两个插件到release上下载 删除之前的版本 替换到 extensions\plugins目录即可 
再次在 SonarQube Servers 右键 Update all project setting 发现不再报错 

在项目上右键 分析项目 在SonarLint Report查看到所有分析结果  







本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码质量检测-Sonar 的相关文章

  • 代码质量检测-Sonar

    一 Sonar简介 sonarqube系统是一个代码质量检测工具 由以下四个组件组成 https docs sonarqube org display SONAR Architecture and Integration 1 一个sonar
  • 只有持续的变革和创新才是CRM成功的关键

    这两年来 我目睹了众多的企业在进行CRM的尝试和体验 也亲历了众多的企业对CRM成功与失败的讨论 甚至于有很多关于CRM失败的项目和言论 让更多后面的企业停止了尝试的脚步 而这一切 不应该只归罪与一个CRM系统 或者一个CRM项目 而要更多
  • vue-架构与思想-MVVM模式和MVC模式的区别

    今天又重新捡起Vue 想用vue做个自己的应用 作为一个后台服务的se 对前台一直是很苦恼的 然后按着这个思路就干起来了 当然就遇到了这个问题 MVVM到底是什么 MVC当然是清楚的 那么找了些资料 学习以记之 与君共享 1 MVVM模式和
  • 数字化转型思考

    数字化转型 数字化转型 新的改变 数字化转型 2022年我开始负责公司管理信息系统 人财物等 的建设和运营 这让我有机会参与数字化的相关实践 2023年公司工作会开完后 自己对今年的数字化工作也做了初步思考 共分为五大部分 1 组织变革 构
  • 使用statsvn统计svn中的代码量

    StatSVN介绍 StatSVN是一个Java写的开源代码统计程序 从statCVS移植而来 能够从Subversion版本库中取得信息 然后生成描述项目开发的各种表格和图表 比如 代码行数的时间线 针对每个开发者的代码行数 开发者的活跃
  • 同行评审

    在IBM 微软等很多公司都有一个很好的实践 那就是代码复审 这种代码审查的过程 不是将代码发给某一个人或某几个人去看 而是强调程序员自己定期走上台 向其他人讲解自己源程序的活动 因为要向大家讲解自己的程序 程序员会极其重视自己的工作进度 代
  • Git&SourceTree学习

    Souretree操作 1 创建本地仓库 2 创建文件 3 修改文件 add commit 4 创建分支 branch 5 合并分支 merge rebase 6 回滚与重置提交 revert reset 7 推送 push 8 拉取 pu
  • 用chatgpt写论文可行吗,查重率会达到多少

    AI工具国内体验 关注 码视野 回复关键字 1002 选题 题目 物联网技术在智能家居系统中的应用研究 概要生成 问 请以 物联网技术在智能家居系统中的应用研究 为课题 写一篇物联网专业本科毕业论文的摘要 不少于400字 答 随着人们生活水
  • 项目资源管理

    目录 申明 1 核心概念 2 虚拟团队 分布式团队 3 规划质量管理 3 1 1 输入 3 1 2 工具和技术 3 1 2 1 责任分配矩阵 3 1 3 输出 4 估算活动资源 4 1 1 输入 4 1 2 工具与技术 4 1 3 输出 4
  • 9大最佳知识库软件/文档管理工具

    企业的任何工作流程都离不开文档管理 面对复杂的业务流程 频繁的文档编辑任务和跨区域的文件共享需求 优秀的文档管理体系能够帮助企业实现安全的文档存储 高效的文档搜索 便捷的文档协作和有效的文档权限 版本 行为管控 由于各个产品切入文档管理市场
  • 【经验贴】新手项目经理如何接手并管好项目?

    最近有刷到这样一些求助帖 初入职场两三年的项目经理现在开始独立带项目 由于缺乏经验不知道从何下手 询问如何能快速接手并管好项目呢 这个话题也引起了大家的热议 今天就给大家分享一下一些实践经验 1 刚拿到项目时 应该做哪些准备 新接手项目时
  • 转变思路,重建团队

    每一次人员流动都会带来一次思考 去年秋天 受到andriod等领域大面积招人波及等原因 离职的3个同事有2个都干了与andriod有关的工作 觉得andriod很可能已经产生了泡沫 导致团队出现人员流失 1 最近 经过一个反思周期之后 随着
  • 要言不烦先行指标与滞后指标的12个要点

    先行指标 leading indicator 是在结果发生之前对结果具有预测作用的度量数据 又称为超前指标 预测性指标 先导指标 领先指标 行为指标 过程指标等 滞后指标 lagging indicator 是对最终结果的度量数据 反映的是
  • 架构师--IT策略灵魂的创造者

    http blog csdn net aspop archive 2006 01 21 585823 aspx 在比尔 盖茨的众多称谓中 据说他更偏爱 首席软件架构师 同样 在网易创始人丁磊名字前 也有 首席架构师 这样的称谓 对于企业来说
  • 网站分布式技术有哪些?

    分布式软件系统 Distributed Software Systems 是支持 分布式处理的软件系统 是在由 通信网络互联的多处理机体系结构上执行任务的系统 它包括分布式操作系统 分布式程序设计语言及其编译 解释 系统 分布式文件系统和
  • 能力成熟度模型集成(CMMI)

    实施CMMI意义 质量和进度 能保证软件开发的质量与进度 能对 杂乱无章 无序管理 的项目开发过程进行规范 成功控制 因为质量有所保证 浪费在修改 解决客户的抱怨方面的成本降低很多 绩效管理水平 公司通过过程改进 简历财富库以共享经验 而不
  • 软件项目经理的基本职责

    软件项目经理的基本职责 1 制定项目计划 并根据各种变化修改项目计划2 实施 项目的管理 开发 质量保证过程 确保客户的成本 进度 绩效和质量目标 3 制定有效的项目决策过程4 确保在项目生命周期中遵循是实施公司的管理和质量政策5 选择一个
  • 开发工具链-DevOps_阿里云云效

    简介 阿里云效官网 DevOps Development和Operations的组合词 是一组过程 方法与系统的统称 用于促进开发 应用程序 软件工程 技术运营和质量保障 QA 部门之间的沟通 协作与整合 百度百科 快速开始 1 云效首页
  • 敏捷项目管理ACP解析会笔记

    互联网时代企业环境现状 产品生命周期急剧缩短 市场环境变化太快 客户不满意 客户 团队 产品 产品需求界定不清 什么是敏捷项目管理 低成本 快速度 高质量 交付更高质量 敏捷宣言 个体和交互 重于过程和工具 可工作的软件 重于面面俱到的文档
  • 项目进度管理:项目经理把控项目进度的技巧

    到项目后期 加班越发频繁 今天我们得加班完成这点工作了 这是在项目里我们听到最多的一句话 王嘉在公司好几年 也参与了几个项目 由于他各方面出色表现 公司分配给他一个小项目 初次成为项目经理的他信心满满 他觉得这不是一件难事 每天只需要监督好

随机推荐

  • idm 服务器响应显示您没有权限下载此文件_玩转IDM,你不知道的IDM巧妙使用方法...

    在此前分享过的一系列百度网盘加速下载文章中 IDM Internet Download Manager 是不可或缺的一个环节 IDM 除了可以用来加速下载百度网盘资源外 其本身也是一款非常强大的下载器 它高速 精简 高效 把 一个程序做好一
  • 远程桌面控制台,有标签页可以管理多个远程桌面

    Server 2003系统自带远程桌面控制台 有标签页可以管理多个远程桌面 在windows的其他系统如果要实现可以参照以下操作 1 将server2003系统C WINDOWS system32目录下的mstsmhst dll mstsm
  • Android之 WebView的使用

    一 简介 1 1 WebView是用来展示网页的控件 底层是google的WebKit的引擎 比起苹果的WebView webkit一些不足地方 不能支持word等文件的预览 纯标签加载 并不支持所有标签的加载 不支持文件的下载 图片的放大
  • Elasticsearch 索引增删改

    添加小编微信 372787553 进入程序员技术交流群 本文已被 ElasticSearch从入门到入魔 收录 Elasticsearch 增删改 在前面我们已经安装好了elasticsearch 已经kibana 如果您还没有安装可以参考
  • 区块链倪老师:《区块链思维》第二章——“二维思维”的使用方法

    上回在 区块链思维 第一章中 我们已经从 一维思维 进阶到了 二维思维 今天我们就来讲讲如何使用 二维思维 二维思维 也叫结构化思维 顾名思义是将知识进行结构化的一种思维方式 同样 在区块链系统中 不同的部分分别构成了不同的结构 一般说来
  • 我的Android进阶之旅------>经典的大客推荐(排名不分先后)!!

    今天看到一篇文章 收藏了很多大牛的博客 在这里分享一下 转载于 http blog csdn net wujxiaoz article details 8237096 Android中文Wiki AndroidStudio NDK开发 移动
  • 思维导图系列——数据库

    思维导图系列 数据库 思维导图为博主期末复习亲自整理而成的 知识点覆盖全 可直接看思维导图复习 包含注解 图示等 觉得对你有帮助 不妨一键三连哦 链接见文末 参考书目 数据库系统概论 第5版 王珊 系列文章直达 思维导图系列 操作系统 思维
  • Qt信号与槽机制的本质

    引入 对象与对象之间的通信有多个方式 如果我们要提供一种对象之间的通信机制 这种机制 要能够给两个不同对象中的函数建立映射关系 前者被调用时后者也能被自动调用 再深入一些 两个对象如果都互相不知道对方的存在 仍然可以建立联系 甚至一对一的映
  • 人物故事

    李飞飞 导语 今年9月11日 谷歌云AI部门负责人李飞飞宣布即将离职 回到斯坦福大学任教 外媒 连线 杂志日前刊文 讲述了李飞飞离职背后的故事 以下为文章全文 去年六月有段时间 凌晨一点左右 李飞飞穿着睡衣 坐在华盛顿特区酒店房间里 练习几
  • web页面攻击分为几类?可以提供几种解决方案吗?

    WEB基本攻击大致可以分为三大类 资源枚举 参数操纵 和 其它攻击 资源枚举 遍历站点所有可访问的目录 然后把一些常见的备胎文件名 比如 sql bak index 副本 html 一个个都枚举一下 如果运气好枚举到了就直接下载 参数操纵
  • 嵌入式linux通过systemd自启动一个c代码

    上一篇博文说了嵌入式linux通过systemd自启动一个python代码 这次把python代码改为c代码 再试试 主要有两个文件 etc systemd system autostart service 用于启动 home roor a
  • 【Error】Call requires API level 3 (current min is 1)解决办法

    今天从网上下载了一个程序 本来好好的 后来不知道怎么弄的就不好使了 解决办法 在工程上右键 gt Android Tools gt Clear Lint Markers
  • [leetcode 周赛 148] 1147 段式回文

    目录 1147 Longest Chunked Palindrome Decomposition 段式回文 描述 思路 代码实现 1147 Longest Chunked Palindrome Decomposition 段式回文 描述 段
  • js逆向DES/AES解密篇

    以某网站登录为例 显然参数由三部分构成 用户名 密码和一个十六位的时间戳 显而易见密码被加密了 以password为关键词搜索js 定位到这一行打个断点 重新点击登录按钮 就会进入到加密函数内部 可以确定是由这个函数进行加密的 b encr
  • Oracle提示,严重: testWhileIdle is true, validationQuery not set

    使用Druid连接Oracle数据库时 提示严重 testWhileIdle is true validationQuery not set 上面的是错误 下面的是日志 是没有问题的 修改错误信息参考testWhileIdle is tru
  • js数组高阶函数——includes()方法

    博主 小猫娃来啦 文章核心 js数组高阶函数 includes方法 文章目录 前言 数组的一般化操作 创建数组 获取数组长度 访问 遍历 数组元素 修改数组元素 删除数组元素 数组尾部添加 数组尾部删除 includes 方法 举例说明 关
  • JavaScript加密/解密与OpenAI的对接:生成加密对话的ChatGPT 4.0应用

    首先 我们来看一个简单的JavaScript加密算法的示例 该算法将输入的字符串每个字符的ASCII值加上1 并返回一个新的字符串 以下是加密函数的代码 javascriptCopy codefunction encrypt message
  • js判断object里面是否包含某一字段

  • Arduino IDE闪退解决办法

    打开Arduino的时候 开始界面只显示了 初始化包 和 准备开发板 然后开始界面消息 Arduino也不能运行 解决办法 将 C Users 你的用户名 AppData Local Arduino15文件夹 删除即可 需要注意 有的电脑有
  • 代码质量检测-Sonar

    一 Sonar简介 sonarqube系统是一个代码质量检测工具 由以下四个组件组成 https docs sonarqube org display SONAR Architecture and Integration 1 一个sonar