问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何更好地利用Pmd,Findbugs和CheckStyle分析结果

发布网友 发布时间:2022-04-30 09:21

我来回答

2个回答

懂视网 时间:2022-04-30 13:42

在查询分析结果以前,要遵守以下几个步骤:

  • 第一步:
  • 用PMD,CPD,FindBugs和CheckStyle分析项目工程,生成包含分析结果的XML文件。

  • 第二步:
  • 用JArchitect分析项目工程。

  • 第三步:
  • 在JArchitect点击菜单“插件(Plugins)”->“导入插件结果文件(Import Plugins Result Files)”把所有的XML文件导入到JArchitect中。

    JArchitect默认给这些工具提供了许多有用的查询,并且这些查询都是可以很简单的进行定制的。

    技术分享

    让我们来看一些CQLinq的查询:

    获取的所有的问题(issue):

    获取所有问题的请求很简单,但是没什么用处,因为如何利用23272个问题的分析结果确实是一个很大的挑战。

    技术分享

    为了更好的利用这些工具的分析结果,我们可以用CQLinq来做过滤,然后只关注那些我们想要关注的东西。

    根据所使用的检查工具发请求

    我们可以修改第一个请求,然后添加一个查询工具的criteria。

    技术分享

    据规则集发请求

    我们也可以根据问题的规则集做过滤:

    技术分享

    根据优先级发请求

    也可以根据优先级做过滤:

    技术分享

    出现次数最多的问题

    知道哪些问题是被这些工具报告次数最多的是很有用的。

    技术分享

    出现问题最多的类

    知道哪些类包含了最多的问题是很有用的。

    技术分享

    上图可以看出来,CheckStyle报告的上千个问题中有很多是可以忽略的。

    前面的查询很有用,但是,它并没有给我们一个精确的类质量的信息,因为要考虑的另一个有用的维度就是代码行数(NBLinesOfCode)。一般来说代码行数多的类会包含更多的问题,基于这个考虑,我们可以修改之前的请求来计算出问题数目和代码行数(NBLinesOfCode)的比率。

    技术分享

    上面的查询结果看上去很奇怪,前8个类的问题数和代码行数比率超过了200,也就是说一行代码有超过200个问题。

    为了解释这种行为,我们看下CompilerAstParser的一些代码:

    技术分享

    代码行数(NBLinesOfCode)指的是语句的数目而不是代码的物理行数,CompilerAstParser这个类声明了很多数组,每一个都包含了几千个物理行,但是,每一个数组都被认为是一个语句。

    就像前面展示的出现次数最多的问题那样,每一个数组都把”+应该在一个新行上”这个规则违反了上千次。或许最好是应该把这样的规则从CheckStyle的配置文件中删掉。

    出问题最多的方法

    当静态警察工具报告了问题以后,定位解决问题的优先级是很有用的,尤其是当包含bug的时候。

    bug可能存在于某一个特定的方法中,但是,知道还有多少方法也受这个bug的影响是非常有用的。知道了出问题最多的这个方法做好事尽快把它解决掉。

    技术分享

    使用CQLinq,我们可以把这些工具的结果和JArchitect的结果结合起来创建出更复杂的查询,然后把这些检查规则添加到构建过程中去。

    问题的趋势

    工程中有问题并不是异常情况,我们甚至可以说是正常的,但是,我们要检查工程的质量趋势。如果随着工程的更新和演化问题数目增加了,将会是一个很坏的指标。

    JArchitect提供了趋势监控特性来创建趋势图。趋势图是根据分析时间记录的特定维度上的值创建出来的。默认有50多个趋势维度,也可以很简单定制趋势维度。

    下面给Pmd问题创建一个趋势维度:

    技术分享

    然后,你就可以很简单的创建趋势图在趋势维度上做监控,然后把它添加到JArchitect的操作面板中。

    技术分享

    有了这个趋势图,我们就可以监视Pmd问题的进化,然后发现这个维度的问题随版本进化的原因。

    定制JArchitect报表

    JArchitect可以在列出了CQLinq查询的HTML报表中追加额外的报表区。

    在CQLinq查询浏览面板中,一个特定的CQLinq组是用橙色的的边框包围的。

    技术分享

    也可以把Pmd趋势图添加到报表中:

    技术分享

    在HTML报表中,这些被添加进来的区域可以通过菜单访问:

    技术分享

    这是被添加进Pmd查询报表中的页面:

    技术分享

    结论

    JArchitect 4 对其他的静态分析工具是开放的,你也可以很简单的像本文说的那样把你自己的工具做成它的插件。这样你就可以使用JArchitect的所有的功能来更好的利用那些有名的java静态分析工具的分析结果。

    原文链接: javadepend 翻译: ImportNew.com - miracle1919
    译文链接: http://www.importnew.com/11119.html
    [ 转载请保留原文出处、译者和译文链接。]

     

    推荐:静态代码检查工具 FindBugs

    如何更好地利用Pmd、Findbugs和CheckStyle分析结果

    标签:

    热心网友 时间:2022-04-30 10:50

    第一步: 用PMD,CPD,FindBugs和CheckStyle分析项目工程,生成包含分析结果的XML文件。 第二步: 用JArchitect分析项目工程。 第三步: 在JArchitect点击菜单“插件(Plugins)”->“导入插件结果文件(Import Plugins Result Files)”把所有的XML文件
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    和面的和是什么读音? win10 应用打不开。全都打不开。 进入win10打不开软件 win10电脑软件都打不开是什么原因win10突然软件都打不开软件是怎么回事... 软件打不开怎么办win10电脑点不开软件最简单办法 请问下,离厦门市岛内的台湾路的国联大厦最近的建设银行和农业银行... 从巴黎都市到建设银行怎么坐公交车,最快需要多久 东莞万江官桥窖离建设银行哪路车最近? 建行七支分行有那些公交车经过 佛山哪里有飞越丛林拓展 乌龟怎么才能孵蛋啊?还有怎么区分公母啊? 乌龟生蛋时有怎样的表现? 吃乌龟蛋龟蛋过敏怎么办 乌龟蛋是什么 乌龟蛋是怎样变成乌龟的 家养乌龟蛋怎么孵化? 乌龟蛋要怎么照顾? 乌龟下蛋能把乌龟和蛋放一起吗? 乌龟生的蛋可吃吗,有营养吗? 如何保存乌龟蛋才可以防止它变质? 怎么将QQ飞车中的歌曲全部收藏到QQ音乐中 怎么把QQ音乐的歌传到QQ飞车音乐播放器里边 怎样把QQ音乐的歌曲放到QQ飞车的音乐播放 QQ飞车怎么添加QQ音乐 qq飞车怎么绑定qq音乐? 怎么把qq音乐上的歌传到飞车上 怎么把QQ音乐移到QQ飞车里面 怎么将QQ音乐里的歌下载到QQ飞车上? qq飞车怎么用qq音乐 怎样把QQ音乐里的歌上传到QQ飞车 华为p30pro是用哪国的屏两种型号的手机用的屏有什么区别?一 宝宝吃饺子什么馅好 三岁小孩吃什么馅的饺子好 一岁半宝宝吃饺子什么馅好 十个月的宝宝能吃什么馅的饺子 俩岁宝宝吃饺子什么馅好 什么饺子馅适合儿童吃 一岁宝宝吃什么馅饺子 两岁宝宝吃什么样的饺子馅好 微信接龙怎么保存 华为40瓦无线充电器用65瓦充电头为什么打不到40瓦充电效果? tonney音响怎么连蓝牙 如何更好地利用Pmd,Findbugs和CheckStyle分析结果 plugins12 为什么我们在搭建DNS服务器? 为什么要建立文件共享服务器 web服务器是作什么的,为什么要搭建它,有直接卖的软件吗? 企业服务器构建的意义 为什么要建立自己的DNS服务器,用ISP提供的不就可以吗??为什么还要自己建成一个? 为什么要把服务器放到机房里呢? 阳台定制洗衣柜,留空40公分有远见,洗烘机叠放,把收纳挪到中间