年终奖翻倍了,就因为用了Sonar

如何使用Sonar进行静态扫描(Windows系统) 与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。1、在sonar 服务已经搭建,Jenkins所在主机可以正常访问的情况下,进到jenkins安装插件的界面,搜索“SonarQube Scanner”,安装好后重启Jenkins服务。 阅读详情

背景

今年年终翻倍了,可能在大家眼里都不是个事,但是对于我来说确确实实翻倍了。主要原因还是因为主导项目使用了Sonar,提高了开发效率和代码质量为我加了不少分,废话不多说,开搞。

Sonar 介绍

Sonar 为代码的质量管理提供了一个平台,对传统的代码静态检测如 PMD、FindBugs 等工具进行整合,可以说是目前最强大的代码质量管理工具之一。——Sonar 官网介绍

Sonar 大致分为IDEA 插件版本的SonarLint 和带有非常友好功能强大GUI 的SonarQube 代码质量平台,完全能满足我们的需求。并且Sonar 提供了面向gitlab、jekins、maven 的无缝对接支持,是当下最活跃热门的代码质量扫描工具。

Sonar 功能

  • Sonar 可以通过PMD、CheckStyle、Findbugs 等等代码规则检测工具检查代码编写规范和潜在的缺陷。
  • 显然程序中包含大量复制粘贴的代码是质量低下的,Sonar 可以展示源码中重复严重的地方。
  • 通过Sonar 可以找出循环,展示包与包、类与类之间的相互依赖关系,通过Sonar 可以管理第三方的jar 包, 检测耦合。
  • 了解自己在编码过程中犯过的错误,让自己的代码更具有可读性和维护性。

Sonar 优点

  • 开源免费:免费的社区版,对商业用户也没有限制。
  • 功能强大:具有版本管理的功能,以及权限管理。
  • 技术支持:广泛的技术支持,强大的社区。
  • 开源的代码质量管理平台:可以支持包括JAVA、C#、C/C++、PL/SQL、Cobol、JavaScrip、Groovy 等等二十几种编程语言的代码质量管理与检测。
  • 检测问题:Sonar 代码分析器配备强大的引擎可以检测到如空指针、逻辑错误和资源泄露等问题。

风险漏洞

SonarQube 是一款开源静态代码质量分析管理工具,SonarQube 版本<8.6的情况下,在默认配置的情况下,缺少对API 接口的访问权限控制,攻击者可利用该漏洞在未授权的情况下,通过访问api/settings/values 接口从而获取到SMTP、SVN、GitLab 凭据,进一步获取源代码数据仓库中的源代码,造成项目源代码泄露。同时还可以对使用默认账号密码的用户进行攻击,系统安装完成后,默认弱口令为admin/admin,攻击者通过输入默认账号密码,同样可以获得敏感配置信息,从而进一步窃取企业源代码。

解决方案

1、升级版本到8.6以上;

2、漏洞是利用API接口窃取数据,可以将SonarQube 部署在内网环境,并修改默认账号密码和端口加以防范。

Sonar 实践

简单做法

最简单的做法就是,IDEA 的plugins 应用市场直接搜索SonarLint 然后安装就可以了。然后直接鼠标右键选择Sonar 扫描文件就可以看到结果了:

在这里插入图片描述

此处就发现一个开发者忽略的问题,相同对象重复判空,导致下面逻辑还是可能出现问题

	/**
     * 判断是否为禁用状态
     */
    private XXX a(Long disableStartTime, Long disableEndTime) {
        Long currentTime = DateUtil.currentSeconds();
        if (null == disableEndTime ||   null == disableEndTime) {
            return XXX.enable;
        }
        ...
    }

这种简单粗暴的问题有两个

  1. Sonar 的规则有一千多条,扫描出的问题严重性有Bugs、Vulnerabilities、Code Smells 等几个级别,如果所有的问题都要改过去,效率就太低了,也难以执行,个人认为,除了Bug 级别的必须改掉之外,其他级别的问题不必强制性改掉,有追求的同学可以当作优化自己代码风格的手段。但是不幸的是,SonarLint 的错误提示并没有按照错误等级分类过滤的选项,在茫茫问题条目中一个个找Bug 级别的问题,着实蛋疼。当然,也可以右键选择”disable rules“来直接去掉非Bug 等级的扫描规则,但也不够优雅。

  2. 这种方式全靠自觉,假设代码审查的时候,需要把解决掉所有Bug 级别的问题,作为前置准备工作之一,那我们还得像第1点里面说的那样看有没有遗留的bug 级别问题。

推荐做法

第一步下载

官网下一个SonarQube 的安装包,这里面有个坑,官网上最新的LTS版本的SonarQube(目前是version-8.9)最低要求的Java版本是JDK11,我们现在普遍还是用的Java8,所以推荐下载7.8版本的。

第二步启动

下载完毕,解压后,进入到/Sonarqube-X.X/bin下面,可以看到有所有通用的平台的启动文件

在这里插入图片描述

演示以Windows 平台为例:
在这里插入图片描述
执行StartSonar.bat 启动服务,启动日志在/Sonarqube-X.X/logs/Sonar.log 中,然后浏览器前往localhost:9000,成功后页面如下:

在这里插入图片描述

第三步初始化配置

点击右上角选择登陆,初始用户名密码都是admin,登录后再右上角用户logo 上选择My Accout -> security 创建token 或者修改密码
在这里插入图片描述

在项目根目录下面执行Maven 命令,执行成功后,再回到SonarQube 平台,可以看到结果。

// DSonar.login 后面替换成你自己的token 就行了
mvn clean install Sonar:Sonar -DSonar.host.url=http://localhost:9000 -DSonar.login=d7b53bc44cd108ee40b6691433bf70eb0a507b0b

![在这里插入图片描述](https://img-blog.csdnimg.cn/681077ecea3349bcb5067f034b65e363.png
在这里插入图片描述

根据结果可以看出,还是有很多地方存在NPE没有处理,还有重写equals()没有重写hashCode() 等问题,点击会有规则说明解释:
在这里插入图片描述
修改优化后,再重新执行一回命令,Bug 为0就OK啦。

扩展

根据官方文档,Sonar 可以持续集成与GitLab、Jenkins 联合应用。接入GitLab 每次提交的时候检查有无Bug ,如有,则发送钉钉告警信息。接入项目部署平台,将Bug 检查作为部署前置检查。

常见问题

使用mvn install 出错

Please refer to D:\XXXX\target\surefire-reports for the individual test results.

这是因为测试代码时遇到错误,它会停止编译。只需要在pom.xml 的里添加以下配置,使得测试出错不影响项目的编译。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>
    </plugins>
</build>

mvn install 项目出错:编码GBK 的不可映射字符

pom 文件夹添加编码格式:

 <properties>  
 	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
 </properties> 

IDEA 插件SonarLint 无法连接到SonarQube

1、SonarLint 版本和SonarQube 版本要适配,插件下单地址

​ SonarLint 4.14.1.27745 经验证可以支持SonarQube 7.8

2、没有找到适配的插件可以选择maven 或其他方式扫描分析项目。

IDEA 插件SonarLint 无法启动SonarTS Server

安装Node.js 后重新配置连接

总结

在我们这个地方,你必须不停地奔跑,才能留在原地。如果你要抵达另一个地方,必须以双倍于现在的速度奔跑。——【英】刘易斯·卡罗尔《爱丽丝梦游仙境》

想要从众多竞争对手中脱颖而出,就必须付出更多的努力。我们可以通过Sonar ,帮助我们推动Code Review 和代码设计质量的持续监控,从而提高软件项目的总体开发运维效益。Code Review 是提高项目质量的重要途径之一,也是我们提高自己代码能力和沟通能力的有效方式。

SonarQube: CE/DE/EE/DCE概要介绍 相较于一般的开源工具,比如Docker/Gitlab等,套路都是CE版和EE版。而在代码质量扫描工具的SonarQube这里,显得就更加精细化了一些,SonarQube分为了CE、DE、EE和DCE版本,版本众多,眼花缭乱,如何进行选择,这篇文章搜集和整理了一些基本的信息。 阅读详情

相关推荐

Sonar:代码质量与持续集成的完整指南

本文还有配套的精品资源,点击获取 简介:本书详细介绍了Sonar,一个集成了代码质量管理与持续集成功能的工具,旨在帮助读者全面理解和高效使用Sonar。Sonar的核心功能涵盖了从代码质量管理到技术债务管理的各个方面。书中包括Sonar的安装、配置、模块使用、报告和可视化,以及如何集成到CI/CD流程中。最后,提供最佳实践来提升代码质量与团队协作效率。 1. So...

weixin_42181686的博客 2654

sonar使用

Sonar使用文档 说明 Sonar使用文档是为了方便开发人员在使用时更快上手. 本文档适用于SonarQube7.6版本. 简介 sonar, 全称sonarqube, 是一个开源的代码质量分析平台,便于管理代码的质量,通过SonarQube 我们可以检测出项目中重复的代码. 潜在BUG, 代码规范, 安全性漏洞等问题, 并通过SonarQube web UI展示出来, 同时, 它提供了丰富的插件,支持多种语言的检测, 如Java、Python、Groovy、C、C...

weixin_41533604的博客 6388

sonarlint-intellij-10.27.1.81796.zip - IDEA插件(静态分析与 Bug 检测)

SonarQube for IDE(原名 SonarLint)是一款由Sonar 公司开发的免费、先进的静态分析工具,可提升您的代码质量和安全性。您可以在编写或生成代码时尽早开始分析。本地分析功能可以自动实时识别质量和安全问题,即使是 AI 生成的代码也是如此。然后,在将代码推送到 SCM 之前,使用 QuickFix 或 AI CodeFix 功能修复发现的任何问题。这可确保您的代码符合质量标准,并且可以安全地在生产环境中运行。 https://plugins.jetbrains.com/

sonar入门:全网最全的概念解析与安装

sonarqube sonarqube:是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码格式上的问题。它可以与您现有的工作流程集成,以实现跨项目分支和提取请求的连续代码检查。同时也提供了可视化的管理页面 用于查看检测出的结果 同时sonarqube提供了一系列的规范 可以通过勾选从而设置在检测时是否使用。 sonarlint sonarlint是idea的插件 sonarlint本身也有检查的功能 可以在idea中检测代码 同时也可能在idea中配置检...

小鲍侃java 6055

MarkDown简介(深度解析MarkDown用法)

欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I...

酷酷的旭 7343

CTP Python API及Demo(利用Swig 封装)Windows版(6.6.1traderapi)

环境:visual studio2015、python3.9、 参考的是景色大神的教程自己制作,因为直接用它编译好的无法使用,遂自己编译。 从CTP官网上下载CTP API点击下载。这里用的版本是v6.6.1_P1_tradeapi,想使用不同的版本下载即可: 安装Swig软件,本文中所用的Swig是swigwin-4.0.2版本,点击下载。下载后解压,将swig路径添加到环境变量中。 安装python,注意要安装64位版本,将环境变量配置好。本文所用的是3.9版本。 通过Swig得到pyth.

ProgramVAE的博客 2543

静态代码扫描工具 Sonar 配置及使用

静态代码扫描工具 Sonar 配置及使用

洛西纳的专栏 1万+

减小伺服电机共振的方法(以松下伺服为例)

嘿 ! 我是【小黄】 , 我们又见面啦 !!! 毕竟技术只有大家交流才会进步嘛 ! 这博客是对自己学习的一点点记录和总结 ,如果您对自动控制感兴趣的话 ,可以关注一下我的动态 , 我们一起学习呀 ! 我们都还年轻 ,我们还有无限可能 。 YES ! 减小伺服电机共振的方法(以松下伺服为例)1. 准备工作:1.1.1 如何推定共振点:1.1.2 测定实操:1.1.3 总结:2. 下期预告: 在我们调试完伺服参数以后机器人运动到某个特定位置会产生振动或异响,我们要做的就是消除这个异响保..

在下小黄的博客 1万+

sonar是一款静态代码质量分析工具

sonar是一款静态代码质量分析工具,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言;而且能够集成在IDE、Jenkins、Git等服务中,方便随时查看代码质量分析报告;sonar通过配置的代码分析规则,从可靠性、安全性、可维护性、覆盖率、重复率等方面分析项目,风险等级从A~E划- 分为5个等级;sonar设置了质量门,通过设置的质量门评定此次提交分析的项目代码是否达到了规定的要求;...

包磊磊的博客 4211

Stata新手避坑:用reghdfe搞定行业、地区多重固定效应,告别‘共线性’报错

本文详细介绍了如何使用Stata中的reghdfe命令高效处理多重固定效应问题,解决传统方法在面板回归中遇到的共线性报错和低R²问题。通过实战案例和高级技巧,帮助新手快速掌握行业、地区等多维固定效应的控制方法,提升经济学和金融学研究的分析效率。

weixin_30635053的博客 421

win10安装openvpn客户端

进入C:\Program Files\TAP-Windows\bin目录,然后右键用管理员权限执行addtap.bat文件,此文件执行会创建一个网卡。链接:https://pan.baidu.com/s/1KAifTiP7qp1i5ZkfdnfwkA。4.2 进入安装目录的config下新建一个文件夹,将证书文件全部挪进去(不移动.ovpn文件)3.4 将拿到的ssl认证文件放入安装目录的config目录下。然后修改ovpn文件 “./”代表当前路径,第二个链接重复。3.1 一直下一步到这里打上勾。

qq_36200932的博客 3万+

看这里,全网最详细的Sonar代码扫描平台搭建教程

官网:https://www.sonarqube.org/ 1.sonar简介 sonar是一款静态代码质量分析工具,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,而且能够集成在IDE、Jenkins、Git等服务中,方便随时查看代码质量分析报告。 sonar通过配置的代码分析规则,从可靠性、安全性、可维护性、覆盖率、重复率等方面分析项目,风险等级从A~E划分为5个等级; 同时,sonar可以集成pmd、findbugs、checkstyle等插件来扩展使用其他规则来.

公众号:【伤心的辣条】 1万+

如何获取SAP BTP账户及BAS启用

返回到 Service Marketplace 点击SAP Business Application Studio 然后go to Application。进入子用户的OverView里面找到Entitlements添加SAP Business Application Studio。注意:在选购BTP免费环境的时候,使用人要选公司才可以成功。在完成上述操作后,就可以登陆Cockpit。这里有SAP官方的BTP试用的手顺链接。配置权限※我绑定的是登录时的邮箱。※过程中有问题可以在评论区讨论。

wangshulong2013的博客 723

Sonar简介

SonarQube是一个静态代码扫描平台,支持主流语言的静态代码扫描分析。Sonarqube是sonar的服务端,相当于一个web服务器,用来发布应用,在线浏览、配置分析等。

transform_xbc的博客 3094

100个Python实战项目(七)实现摩斯密码翻译器

作者主页:海拥 作者简介:优快云全栈领域优质创作者、HDZ核心组成员、蝉联C站周榜前十 粉丝福利:往期获奖记录 每周送6~9本书,不定期送各种小礼品(搪瓷杯、抱枕、鼠标垫、马克杯等) 摩斯密码是一种将文本信息作为一系列通断的音调、灯光或咔嗒声传输的方法,无需特殊设备,熟记的小伙伴即可直接翻译。它以电报发明者Samuel F. B. Morse的名字命名。 算法 算法非常简单。英语中的每个字符都被一系列“点”和“破折号”代替,或者有时只是单数的“点”或“

努力是为了站在万人之中,成为别人的光 1万+

手把手教你学Simulink——基于智能电网与AI融合的场景实例:强化学习在并网逆变器控制中的应用

本文介绍了如何利用Simulink和强化学习工具包实现并网逆变器的智能控制。针对传统PI控制方法的局限性,提出采用强化学习(RL)构建自适应控制系统。通过详细步骤展示了从建立主电路模型、设计强化学习环境、选择训练智能体(如PPO算法)到仿真对比测试的全过程。实验结果表明,RL控制器在动态响应、THD指标和参数鲁棒性等方面优于传统PI控制器,突显了数据驱动控制在复杂电力系统中的优势。文章还探讨了该技术在微电网协同控制、在线学习等场景的拓展应用,为智能电网控制提供了新思路。

MHD0815的博客 337

SonarQube代码质量管理平台安装与使用

Sonar简介 Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测 sonarQube能带来什么? Developers' Seven Deadly Sins 1.糟糕的复杂度分布

hunterno4的专栏 21万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

sonar的详细介绍(1)

一种自动静态代码审查工具,用于检测代码中的错误、漏洞和代码异味。可靠性:发现代码中的潜在bug安全性:发现代码中的安全漏洞可维护性:发现代码中不符合代码编写规范的地方单元测试:可以统计并展示单元测试的覆盖率重复:可以统计并展示重复的行,块,密度等数据注释:可以统计并展示代码的行数,注释的行数,占比等数据 、复杂度:可以显示代码的圈复杂度和认知复杂度。

weixin_44249280的博客 3822

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SonarQube 9.9 LTS 版本特性分析

点击上方蓝字⭐️关注“DevOps云学堂”,接收最新技术实践今天是「DevOps云学堂」与你共同进步的第17天JDK版本17+PG数据库支持不支持代码扫描关联Githttps://community.sonarsource.com/t/error-integrating-gitlab-cicd/73668依旧支持多分支代码扫描更快的拉取请求分析拉取请求 (PR) 分析得到显着的速度提升。随着增...

DevOps持续集成的博客 649

sonar安装与使用

docker,liunx中安装sonar; sonar扫描非maven代码

阿昊的博客 2939

调研sonarqube版本区别

文章目录一:调研结果1.版本列表2.功能比较列表如有疑问,可评论区或私信交流! 一:调研结果 1.版本列表 官网资料:https://www.sonarqube.org/downloads/ 分为社区版,开发者,企业版和数据中心版4种 版本功能比较统计: 社区版:在CI / CD中采用代码质量的起点 开发者版:最大应用程序安全性跨分支机构和PR的最大值 企业版:管理您的应用程序组合,在企业级别启用代码质量和安全性。 数据中心版:高可用性,适用于全球部署 2.功能比较列表 社区版 开发者版 企业版

CN_TangZheng的博客 8288

Sonar使用介绍

cehsi123456

一个有趣灵魂的测试员,指点江山,挥斥方遒 2074

自动化代码质量检测平台sonarqube搭建及使用,以及集成gitlab ci提交自动返回结果

Sonar (SonarQube)是一个开源平台,用于管理源代码的质量。Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。支持java, JavaScrip, Scala 等等二十几种编程语言的代码质量管理与检测。SonarQube®是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码异味。它可以与您现有的工作流程集成,以便在项目分支和拉取请求之间进行连续的代码检查。原理架构,这里不多说了,网上一大把,咱们直接开干就完了。

1万+

sonar详细安装,maven使用

‌**Sonar**‌(通常指SonarQube和SonarCloud的统称)是一个用于自动化代码质量检测并提供详细报告的平台。它支持多种编程语言,包括Java、C#、JavaScript、TypeScript、C/C++、Python等,能够检测出代码中的错误、漏洞、代码异味以及不符合编码规范的地方。通过静态代码分析,Sonar帮助开发团队在代码提交前或构建过程中及时发现并修复问题,从而提高软件的整体质量‌。错误:指代码中存在的导致程序运行异常的缺陷。漏洞:指安全相关的问题,可能被恶意攻击者利用。

nice66660的博客 3125

代码质量检测(三)—— SonarLint和SonarQube的本地使用

在弹窗窗口里,填写这个SonarLint的名称,选择的右边配置,输入sonarQube IP和端口号,完成后点击Next.设置认证方式,有Token和用户名密码两种方式,根据自己的情况选择对应方式进行配置。这里选择账号密码的形式,默认为admin/admin。开启自动分析,这里上面红框。

liaoguangxi的博客 1万+

【sonarqube】手把手教你在idea上使用sonar代码质量检测工具

我使用的是MySQL5.7和sonarqube7.6

m0_66584716的博客 6160
上一篇: Code Review 改进方案
下一篇: 又是一个开发效率神器——Charles
iiopsd
博客等级 码龄11年 7036粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值