`

关于sonar

    博客分类:
  • Tool
阅读更多
sonar( http://www.sonarsource.org/ )作为2009 jolt 生产力大奖的获得者, 可以看成一个代码质量检测工具, 用来帮助我们分析评估我们平时代码的质量.
在没有这些可衡量, 标准化的工具之前, 大家都是凭一定的经验来写出好的代码.
而对于一个新手来说, 可以将sonar作为一种学习工具, 通过sonar的分析结果, 知道什么样的代码才是好的代码.
而对于一个经验丰富的开发人员, 可以借助他的经验写出高质量的代码, 但是也没法完全避免一些低级错误, 这时sonar就成了一种check工具

关于软件测量的几个术语
DSM(参考IDEA的DSM功能 http://developer.51cto.com/art/200802/65920.htm)
用来分析整个工程的依赖关系, 一般的原则是高层依赖底层代码(这个跟那个具体依赖于抽象不是同一回事儿), 也可以说应该正向依赖, 否则互相依赖容易出现循环依赖. 这个是我们应该避免的.

LCOM4 (Lack of cohesion of methods, 参见http://www.aivosto.com/project/help/pm-oo-cohesion.html)
用来说明class内部方法和变量之间的关系, 值越大, 说明内聚性越差. 一般情况下 LCOM4=1是内聚性最佳的. 2说明可以拆成两个类, 以此类推.
但是这种测量对门面服务类来说不适用. 有时候很小的类也会根据需要合并在一起, 尽管关联不大

RFC(Response For Class  http://www.virtualmachinery.com/jhawkmetricsclass.htm )
通过检查一个方法被调用的情况来反映一个class的复杂程度. 也可以简单的理解为一个类所包含的方法多寡.

趋势分析
在sonar中有一个趋势分析的概念, 用来反映目前代码的质量的发展趋势如何. sonar采用两种方式来分析这种趋势, 即定性分析和定量分析, 灰色的箭头表示定性分析, 红色, 绿色箭头表示定量分析, 箭头向下, 表示下降趋势, 向上表示上升趋势. 定量分析表明可以直接根据数量来判断一个趋势的好坏, 而定性则需要参考多种因素加以综合考虑才能进行考评. 比如说测试通过率, 过了就是过了, 没过就是没过, 因此是定量分析.

抓住重点
sonar包含了太多的东西, 但是根据项目的不同, 可能你的关注点也会有所不同, 或者你的时间有限, 不可能对所有的问题都照顾到, sonar有一个hotspots页面, 里面列出了每个方面的top 5, 我觉得大部分看这个页面就可以解决主要问题了.

不过本人主要用sonar来对代码做静态分析, 用来替换findbugs+checkstyle+pmd. 因为它的可配置性比较方便, 而且通过maven来运行速度貌似比较快.
另外发现用sonar发现的问题和用eclipse中的findbugs插件发现的问题貌似不一致. 感觉它做的更多的是checkstyle+pmd的工作

使用感受
安装非常简单, 基本是一键式安装
 功能极其丰富, 可以对代码从可靠性, 执行效率, 可移植性, 可维护性, 可用性等多个方面进行评估
基本涵盖了市面上几乎所有静态代码分析工具所具有的功能(checkstyle, findbugs, clover, pmd….)
是目前本人看到的最强大, 最全面的静态分析工具

注意事项
要将sonar服务器与要分析的代码放在同一台机器
我采用的sonar版本为最新的2.1.2, 但是sonar的maven插件在目前的maven仓库中的最新版本为1.8, 因此mvn命令必须为:
mvn org.codehaus.sonar:sonar-maven-plugin:1.8:sonar -Dsonar.skipInstall=true -e
分享到:
评论

相关推荐

    sonarlint for eclipse2

    4. **新云软件.url**:可能是一个快捷方式或链接,指向一个网站或页面,用户可以获取更多关于SonarLint或其他相关软件的信息。 5. **features** 和 **plugins** 目录:这两个目录通常包含Eclipse插件的元数据和实际...

    sonarlint-intellij-6.4.3.42541.zip

    以下是关于SonarLint和IntelliJ IDEA的一些关键知识点: 1. **SonarLint介绍**: SonarLint是一个开源项目,它可以在开发过程中实时检测代码中的问题,包括潜在的bug、漏洞和代码异味。通过与SonarQube或...

    sonar-runner-dist-2.4

    ### 关于sonar-runner-dist-2.4 #### SonarQube简介 SonarQube 是一款用于代码质量管理与环境搭建的强大工具,其核心价值在于帮助开发者在软件开发周期早期阶段发现并解决代码质量问题。SonarQube 支持多种编程语言...

    sonar-runner-1.0下载

    以下是一些关于SonarRunner 1.0的关键知识点: 1. **安装与配置**:首先,用户需要下载SonarRunner 1.0压缩包,解压后在系统路径中添加其bin目录。接着,配置`sonar-runner.properties`文件,指定SonarQube服务器...

    Sonar 5 the comprehensive guide

    《Sonar 5 the comprehensive guide》是一本关于音乐制作和音频工程软件SONAR 5的专业指导书籍。SONAR(Sound On Sound Audio Recording)是由Cakewalk公司开发的一款数字音频工作站(DAW),提供音频和MIDI录音、...

    sonar eclipse插件sonarlint

    sonar eclipse插件sonarlint,原先的插件已经被启用,这是最新的,如果连接本地sonar服务器,需要在eclipse.ini中配置启动参数,参数为org.sonarlint.eclipse.core/server_url 值为sonar服务器地址,如果不配置默认...

    【中文版】sonar实战

    ### Sonar实战:从入门到进阶 #### 知识点概述 Sonar是一个功能强大的代码质量管理平台,专为软件开发团队设计,旨在帮助他们监控、管理和改进代码质量。Sonar不仅提供了静态代码分析,还涵盖了动态分析(如单元...

    Sonarlint中文使用手册

    SonarLint是一款代码检测插件,它能够集成到Eclipse和IntelliJ IDEA这类的集成开发环境(IDE)中,帮助开发者实时地在IDE上检测代码中的问题。SonarLint可以检测多种编程语言,如Java、JavaScript、PHP和Python等,...

    fisher_Sonar数据集_fisher_sonar_fishersonar_分类_数据集sonar_源码

    《Fisher Sonar数据集与线性判别分析在分类中的应用》 Fisher Sonar数据集,全称为fisher_sonar或fishersonar,是机器学习领域中一个广泛使用的分类问题实例,主要应用于训练和测试算法的性能。这个数据集源自声纳...

    sonar runner 进行代码质量监控

    ### Sonar Runner 进行代码质量监控 #### 一、Sonar环境搭建 为了实现代码的质量监控,首先需要搭建Sonar环境。以下是详细的步骤: 1. **安装JDK-1.5以上版本**:Sonar需要Java环境支持,因此首先要确保安装了JDK...

    sonarlint-3.6.0.zip

    6. **META-INF** 目录:标准Java存档(JAR)文件的一部分,通常包含关于JAR的元数据,如MANIFEST.MF文件,其中列出了插件的主类、版本和其他重要信息。 7. **features** 目录:Eclipse插件的特性描述文件通常存放于...

    Sonar-runner Sonar代码扫描辅助工具sonarScanner

    sonar4版本扫描辅助程序. 向服务器上传代码并做扫描分析. 使用方式: CMD切换到项目根目录下(sonar-project.properties文件所在目录)运行 sonar-runner

    java代码集成sonar接口,实现sonar操作的demo

    利用java代码,调用sonar接口,实现在sonar里面创建,更改,用户,组,权限等一系列操作

    sonar使用教程

    sonar使用教程涵盖了在Linux环境下搭建SonarQube环境的详细步骤。SonarQube是一个开源平台,用于持续检测代码质量,支持多种编程语言。在本教程中,主要讲述了如何在具有CentOS 7.0操作系统的Linux环境下进行...

    sonar中文插件1.28

    "sonar中文插件1.28"是专门为SonarQube设计的一个本地化插件,目的是为了提供中文界面和支持,便于中国开发者更加便捷地使用SonarQube进行项目分析和质量管理。 这个插件的版本号是1.28,表明它是针对SonarQube某个...

    sonar.rar_mat数据处理_mat数据集_sonar data_sonar dataset_sonar.mat

    《MATLAB格式的Sonar数据集详解及其在机器学习中的应用》 Sonar数据集,一个广泛用于机器学习和模式识别研究的经典数据集,已经处理为.mat格式,方便了研究者进行快速的数据加载和分析。这个数据集包含了60个特征,...

    IntelliJ IDEA-SonarLint 离线傻瓜式安装

    SonarLint原生集成在IntelliJ IDEA中,但有时可能会遇到与其它插件如`scalint`的兼容性问题,因此,本篇将介绍如何进行SonarLint的离线傻瓜式安装。 首先,由于在线安装SonarLint时可能会遇到版本不匹配或验证失败...

    sonar汉化包等插件

    "sonar汉化包"是针对SonarQube的中文语言包,使得用户界面更加友好,方便中国开发者使用。本文将详细介绍SonarQube以及与汉化相关的插件。 首先,SonarQube的核心功能包括静态代码分析、代码复杂度计算、代码覆盖率...

    sonar与maven的集成使用说明

    ### Sonar与Maven的集成使用说明 #### 一、Sonar简介与本地环境搭建 Sonar是一款开源的代码质量管理工具,它支持多种语言,并且能够帮助开发团队进行持续的代码质量检查。Sonar可以自动地对源代码进行分析,提供...

Global site tag (gtag.js) - Google Analytics