开发人员的七宗罪
-
糟糕的复杂度分布
文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,
且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试 -
重复\\显然程序中包含大量复制粘贴的代码是质量低下的,
sonar可以展示源码中重复严重的地方 -
缺乏单元测试
sonar可以很方便地统计并展示单元测试覆盖率 -
没有代码标准
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写 -
没有足够的或者过多的注释
没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降
而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷 -
潜在的bug
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的bug -
糟糕的设计(原文Spaghetti Design,意大利面式设计)
通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系
可以检测自定义的架构规则
通过sonar可以管理第三方的jar包
可以利用LCOM4检测单个任务规则的应用情况
检测耦合
随着工作代码质量要求越来越高,团队人员逐步扩大,GIT库每天上传的代码量也越来越多,
这个时候问题来,代码规范,代码质量成了一个比较难维护管理,初步尝试过很多基于ide的工具,
例如checkstyle,findbug等工具,但是无法形成统一的平台报表,也不方便对研发bug、开发质量
的问题的统计,通过查阅相关资料,以及看到itchina的推荐sonar代码质量管理平台。
sonar,管理java源代码的质量,可以集成不同的测试工具,代码分析工具,例如checkstyle,findbug,jenkins,maven等流行构建工具,对分析的结果进行加工处理,分析代码需要优化完善地方,以及相关可以预计的bug,便于开发统一模式,加强开发上的细节问题。
sonar5.1 的具体的安装教程详细请查看附件《sonar使用手册.docx》,在这里我主要描述的下sonar的客户端和服务端的大概的安装流程,使用思路,做任何事情,先确定前期的思路路线总是很重要,避免踩更多的坑。
sonar服务安装的流程:
配置jdk---->sonar安装---->数据库安装---->配置sonar的数据库连接信息---->运行sonar平台----->web查看分析报表。
客户端sonar的分析流程:配置jdk---->sonar-runner安装---->配置环境变量---->配置数据库访问信息----->配置需要进行分析的项目信息---->运行命令sonar-runner;
那些年,我们一起踩过的坑?
1.sonar5以上需要安装sonar-runner客户端,之前都是可以继承maven的sonar插件的,通过 mvn sonar:sonar 可以直接生成报表,导致我在这块浪费很多时间去继承maven项目,直到发现附件的sonar教程(百度文库某哥们整理的,充分感谢)sonar-runner客户端可以直接生成代码审查报表,方便省事,比maven插件好用多,避免代码审查侵入项目。
2.sonar常用参数整理,避免理解太过于复杂,其实sonar的考核参数还是比较容易理解的,常用主要如下:
常用参数:
复杂度:简单归结于方法中包含“if、for、while、case、||、&&、?”等块的数目时,复杂度会加1,如果复 杂超过10,sonar认为是一个严重的问题。
重复快:重读的代码块数;
代码块:含有if, else, while, do, for, switch, break, continue, return, throw, synchronized, catch, finally等关键字的语句;
违规级别:次要、主要、严重、阻塞;
3.sonar客户端的配置信息,必须要和服务端保持一致;
注意:附件《自动化审查工具指南.ppt》主要介绍了checkstyle,findbug,sonar工具的使用,以及相关截图;
附件《Sonar参数分析.docx》对sonar参数指标的相关的解释。
相关推荐
### sonar安装及使用说明 #### 一、环境要求 为了确保SonarQube能够正常运行,必须满足一定的系统环境要求。具体来说: - **Java版本**:SonarQube推荐使用JDK 1.8及以上版本。这是因为较新的Java版本能够提供更...
### sonar检查规则指南 #### 一、概览 Sonar是一种广泛使用的代码质量管理工具,它可以帮助开发人员发现代码中的各种问题,包括但不限于bug、漏洞和代码异味等。本篇文章将根据提供的部分Sonar规则指南内容,深入...
sonar eclipse插件sonarlint,原先的插件已经被启用,这是最新的,如果连接本地sonar服务器,需要在eclipse.ini中配置启动参数,参数为org.sonarlint.eclipse.core/server_url 值为sonar服务器地址,如果不配置默认...
### Sonar实战:从入门到进阶 #### 知识点概述 Sonar是一个功能强大的代码质量管理平台,专为软件开发团队设计,旨在帮助他们监控、管理和改进代码质量。Sonar不仅提供了静态代码分析,还涵盖了动态分析(如单元...
Sonar-Kotlin检查规则指南 SonarQube 是一款代码分析工具,旨在帮助开发者编写高质量的代码。 Sonar-Kotlin 是 SonarQube 的一个插件,专门用于分析 Kotlin 语言项目。 Sonar-Kotlin 提供了许多内置规则,帮助...
本指南将详细介绍如何在环境中安装配置Sonar,同时使用MySQL作为数据存储,并通过Ant构建工具调用Sonar任务。以下是详细的步骤: 1、安装Sonar 3.1.1 首先,下载Sonar的版本3.1.1(sonar-3.1.1.zip),将其解压缩至...
SonarLint是一款代码检测插件,它能够集成到Eclipse和IntelliJ IDEA这类的集成开发环境(IDE)中,帮助开发者实时地在IDE上检测代码中的问题。SonarLint可以检测多种编程语言,如Java、JavaScript、PHP和Python等,...
### Sonar Runner 进行代码质量监控 #### 一、Sonar环境搭建 为了实现代码的质量监控,首先需要搭建Sonar环境。以下是详细的步骤: 1. **安装JDK-1.5以上版本**:Sonar需要Java环境支持,因此首先要确保安装了JDK...
《Fisher Sonar数据集与线性判别分析在分类中的应用》 Fisher Sonar数据集,全称为fisher_sonar或fishersonar,是机器学习领域中一个广泛使用的分类问题实例,主要应用于训练和测试算法的性能。这个数据集源自声纳...
SonarLint是一款强大的静态代码分析工具,用于检测代码中的潜在问题和缺陷,它可以在编码阶段就帮助开发者发现并修复代码的不良实践。SonarLint 4.0.0是该工具的一个版本,针对IntelliJ IDEA(简称Idea)提供了一个...
sonar4版本扫描辅助程序. 向服务器上传代码并做扫描分析. 使用方式: CMD切换到项目根目录下(sonar-project.properties文件所在目录)运行 sonar-runner
利用java代码,调用sonar接口,实现在sonar里面创建,更改,用户,组,权限等一系列操作
SonarLint是一款强大的静态代码分析工具,用于在开发过程中实时检测代码质量问题。它与SonarQube服务器相结合,可以提供更全面的代码质量管理。这款插件适用于多种集成开发环境(IDE),包括Eclipse。"sonarlint-...
sonar使用教程涵盖了在Linux环境下搭建SonarQube环境的详细步骤。SonarQube是一个开源平台,用于持续检测代码质量,支持多种编程语言。在本教程中,主要讲述了如何在具有CentOS 7.0操作系统的Linux环境下进行...
"sonar汉化包"是针对SonarQube的中文语言包,使得用户界面更加友好,方便中国开发者使用。本文将详细介绍SonarQube以及与汉化相关的插件。 首先,SonarQube的核心功能包括静态代码分析、代码复杂度计算、代码覆盖率...
SonarLint原生集成在IntelliJ IDEA中,但有时可能会遇到与其它插件如`scalint`的兼容性问题,因此,本篇将介绍如何进行SonarLint的离线傻瓜式安装。 首先,由于在线安装SonarLint时可能会遇到版本不匹配或验证失败...
"sonar中文插件1.28"是专门为SonarQube设计的一个本地化插件,目的是为了提供中文界面和支持,便于中国开发者更加便捷地使用SonarQube进行项目分析和质量管理。 这个插件的版本号是1.28,表明它是针对SonarQube某个...
《MATLAB格式的Sonar数据集详解及其在机器学习中的应用》 Sonar数据集,一个广泛用于机器学习和模式识别研究的经典数据集,已经处理为.mat格式,方便了研究者进行快速的数据加载和分析。这个数据集包含了60个特征,...
1. 解压`sonar-scanner-cli-3.0.3.778-linux.zip`,这将包含可执行文件`bin/sonar-scanner`。 2. 将解压后的目录添加到系统的PATH环境变量中,以便在任何地方都能执行`sonar-scanner`命令。 3. 可选:自定义分析配置...