Java代码质量工具–概述

最近,我有机会在本地IT社区聚会上介绍了该主题。 这是基本演示:

Java代码质量工具

以及更有意义的思维导图:

但是,我认为我需要更深入地探讨这一主题。 这篇博客文章应该像是在此方向上进行进一步调查的起点。

1. CodePro Analytix
这是提高软件质量的出色​​工具(Eclipse插件)。 它具有下一个关键功能:代码分析,JUnit测试生成,JUnit测试编辑器,类似代码分析,度量,代码覆盖率和依赖性分析。 2. PMD 它扫描Java源代码并查找潜在的问题:可能的错误,死代码,次优代码,表达式过于复杂和重复代码。 3. FindBugs 它查找Java程序中的错误。 它可以检测各种常见的编码错误,包括线程同步问题,滥用API方法等。 4.科贝图拉 这是一个免费的Java工具,可以计算测试访问的代码的百分比。 它可以用来识别Java程序的哪些部分缺少测试覆盖范围。 它基于jcoverage。 5.艾玛 它是基于字节码检测的快速Java代码覆盖工具。 它与现有工具的不同之处在于,它可以对大型企业软件项目进行覆盖范围分析,同时强调快速的个人开发。 6. Checkstyle 它是一种开发工具,可帮助程序员编写遵守编码标准的Java代码。 7. JBoss Tattletale JBoss Tattletale是一个工具,可以帮助您大致了解您正在从事的项目或您所依赖的产品。 该工具将递归扫描目录中的JAR文件,并生成链接和格式化HTML报告。 8. UCDetector UCDetector(必需代码检测器)是一个开源eclipse插件工具,用于查找不必要的(死)java代码。 它还尝试使代码最终,受保护或私有。 UCDetector还发现类之间的循环依赖关系。 9.声纳 Sonar是用于Java应用程序的连续质量控制工具。 其生活的基本目的是加入您现有的持续集成工具,以将所有开发项目置于质量控制之下。 10. XRadar XRadar是一个开放的,可扩展的代码报告工具,该工具可以生成有关系统当前状态和开发情况HTML / SVG报告。 使用DependencyFinder,JDepend,PMD,PMD-CPD,JavaNCSS,Cobertura,Checkstyle,XSource,JUnit,Java2HTML,ant和maven。 11. QALab QALab合并来自Checkstyle,PMD,FindBugs和Simian的数据,并将其显示在一个合并的视图中。 QALab跟踪随时间变化的情况,从而使您可以查看随时间变化的趋势。 您可以告诉天气违反次数增加或减少的情况-在每个文件或整个项目中。 它还绘制了该数据的图表。 QALab可以插入Maven或ant。 12. Clirr Clirr是用于检查Java库与旧版本的二进制和源兼容性的工具。 基本上,您给它提供了两组jar文件,Clirr会转储出公共api中的更改列表。 可以将Clirr Ant任务配置为在检测到不兼容的api更改时中断构建。 在连续集成过程中,Clirr可以自动防止意外引入二进制或源兼容性问题。 13. JDiff JDiff是一个Javadoc doclet,当比较两个API时,它会生成所有以任何方式删除,添加或更改的所有程序包,类,构造函数,方法和字段(包括其文档)HTML报告。 这对于准确描述产品的两个版本之间发生了什么变化非常有用。 仅比较每个版本的API(应用程序编程接口)。 它不比较源代码在执行时的功能。 14.吉林特 它通过执行数据流分析和构建锁图来检查您的Java代码并查找错误,不一致和同步问题。 15. JDepend JDepend遍历Java类文件目录,并为每个Java包生成设计质量指标。 JDepend允许您根据其可扩展性,可重用性和可维护性自动衡量设计的质量,以有效地管理和控制软件包的依赖性。 16. cloc cloc计算许多编程语言中源代码的空行,注释行和物理行。 17. Dependometer Dependometer对软件系统中的物理依赖关系进行静态分析。 Dependometer根据逻辑体系结构验证依赖关系,这些逻辑体系结构将系统分为类,包,子系统,垂直切片和层,并检测这些结构元素之间的循环。 此外,它在不同的抽象层上计算许多质量指标,并报告违反所配置阈值的情况。 18. Hammurapi Hammurapi是一个开放源代码检查工具。 它的发行版中包含100多个检查员,他们检查代码的不同方面:符合EJB规范,线程问题,编码标准等等。 19. JavaNCSS JavaNCSS是一个简单的命令行实用程序,它测量Java编程语言的两个标准源代码指标。 针对每个类和/或每个功能,全局收集度量。 20. DCD DCD在Java应用程序中找到无效代码。 21.甲级 Classycle的分析器分析Java应用程序或库中的静态类和包依赖性。 这对于查找类或包之间的循环依赖关系特别有用。 Classycle与JDepend相似,后者也进行依赖关系分析,但仅在程序包级别。 22. ckjm 程序ckjm通过处理已编译的Java文件的字节码来计算Chidamber和Kemerer的面向对象的度量。 该程序为每个班级计算Chidamber和Kemerer提出的以下六个指标。 23. Jameleon Jameleon是一个自动化测试框架,技术用户和非技术用户都可以轻松使用。 Jameleon背后的主要概念之一是创建一组代表应用程序不同屏幕的关键字或标签。 可以使用Java定义自动执行每个特定屏幕所需的所有逻辑,并将其映射到这些关键字。 然后,可以使用不同的数据集来组织关键字以形成测试脚本,而无需深入了解应用程序的工作方式。 然后,将测试脚本用于自动化测试并生成手动测试用例文档。 24. DoctorJ DoctorJ在以下功能区域中分析Java代码:文档验证,统计信息生成和语法分析。 25.麦克 Macker是Java开发人员的构建时体系结构规则检查实用程序。 它旨在对程序员始终梦dream以求的项目的构架理想进行建模,然后打破-这有助于保持代码的清洁和一致。 您可以定制规则文件以适合特定项目的结构,或者为代码编写一些通用的“良好实践”规则。 Macker不会试图将别人的规矩推到您的喉咙上。 它非常灵活,并且编写规则文件是每个唯一项目的开发过程的一部分。 26.鱿鱼 Squale是一个质量分析平台,可以分析多语言软件应用程序,以清晰,全面地显示其质量:高级经理的高级要素和开发团队的实用指标。 27. SourceMonitor 免费软件程序SourceMonitor可让您查看软件源代码的内部,以查明您拥有多少代码并确定模块的相对复杂性。 例如,您可以使用SourceMonitor来识别最有可能包含缺陷的代码,因此需要进行正式审查。 28. Panopticon Panopticode项目提供了一组开源工具,用于收集,关联和显示代码指标。 29. Eclipse Metrics插件 提供用于Eclipse平台的指标计算和依赖性分析器插件。 用平均值和标准偏差测量各种指标,并检测包装和类型相关性中的周期并对其进行图形化。 30. QJ-Pro QJ-Pro是针对软件开发人员的全面软件检查工具。 开发人员可以在编写程序时自动检查其Java源代码并提高Java编程技能。 QJ-Pro提供了描述性Java模式,解释了易于出错的代码构造并为其提供了解决方案。 31.轮回 Byecycle是Eclipse的自动安排依赖性分析插件。 它的目标是使您在看到错误的代码时感到恶心,并在看到良好的代码时感到高兴。 32.科夸 Coqua测量5种不同的Java代码质量指标,为管理人员提供概述和历史记录,并为开发人员提供从代码到细节的详细视图。 可以为每个团队定义指标。 是大中型和/或海上项目的理想选择。 33.依赖查找器 从大多数Java编译器生成的Java类文件中提取依赖关系和OO度量。 34.Jalopy Jalopy是一种易于配置的源代码格式化程序,可以检测和修复Java代码中可能出现的许多代码约定缺陷。 Jalopy更像是代码修复程序,而不是代码检查程序。 Jalopy插件适用于大多数IDE,并且在大多数情况下,它们可以与IDE无缝衔接。 35. JarAnalyzer JarAnalyzer是用于.jar文件的依赖项管理工具。 JarAnalyzer将分析给定目录中的所有.jar,并确定每个之间的依赖关系。 输出格式包括xml(包含用于将其转换为html的样式表)和GraphViz DOT,使您可以生成直观的组件图,以显示.jar文件之间的关系。 xml输出包括重要的设计指标,例如传入和传出耦合,抽象性,不稳定性和距离。 还有一个可用的Ant任务,允许您将JarAnalyzer包含在构建脚本中。 36.冷凝器 冷凝器是用于查找和删除重复的Java代码的工具。 与仅查找重复代码的工具不同,Condenser的目的是在安全的地方自动删除重复的代码。 37.救济 Relief对Java项目提供了新的外观。 依靠我们通过检查真实对象的形状,大小或在空间中的相对位置来处理真实对象的能力,它对Java包,类型和字段及其关系提供了“物理”视图,从而使它们更易于处理。 让我们快速讨论一下我们如何解释物理属性以及它如何帮助我们掌握项目特征。 38.股份公司 JCSC是一种功能强大的工具,可以根据高度定义的编码标准和潜在的不良代码来检查源代码。 该标准涵盖了类,接口,字段,参数等的命名约定。 还可以定义类型(类/接口)的结构布局。 就像在方法之前或之后以及以什么顺序放置字段一样。 可以通过可见性或类型(实例,类,常量)定义顺序。 方法同样适用。 这些规则中的每一个都是高度可定制的。 通过定义在代码中的空白处以及何时使用花括号,可以增强可读性。 正确的JavaDoc的存在可以被强制执行,并且可以达到各种级别。 除此之外,它还会发现代码中的弱点-潜在的错误-例如空的catch / finally块,无默认切换,抛出“ Exception”类型,慢速代码。 39.汤匙 Spoon是一个完全支持Java 5的Java程序处理器。它提供了完整且细粒度的Java元模型,可以在其中读取和修改任何程序元素(类,方法,字段,语句,表达式等)。 通过使用纯Java模板引擎,可以将Spoon用于验证目的,以确保您的程序遵守某些编程约定或准则,或者用于程序转换。 40. Lint4j Lint4j(“ Lint for Java”)是静态Java源代码和字节码分析器,它检测锁定和线程问题,性能和可伸缩性问题,并通过执行类型,数据流和锁定图分析来检查复杂的合同,例如Java序列化。 41. Crap4j Crap4j是CRAP(变更风险分析和预测)软件度量标准的Java实现,这是一种轻度冒犯的度量标准名称,有助于保护您免受真正冒犯的代码的侵害。 42.路径查找器 Java PathFinder(JPF)是用于验证可执行Java字节码程序的系统。 它的基本形式是一个Java虚拟机(JVM),用作显式状态软件模型检查器,系统地探索程序的所有潜在执行路径,以发现违反诸如死锁或未处理异常之类的属性的情况。 与传统的调试器不同,JPF报告导致缺陷的整个执行路径。 JPF特别适合在多线程程序中发现难以测试的并发缺陷 43.烟灰 Soot可以用作优化或检查类文件的独立工具,也可以用作在Java字节码上开发优化或转换的框架。 44. ESC / Java2 Java版本2的扩展静态检查器(ESC / Java2)是一种编程工具,它通过对程序代码及其形式注释进行静态分析,尝试在带有JML注释的Java程序中查找常见的运行时错误。 用户可以通过用特殊格式的注释(称为pragmas)注释程序来控制ESC / Java2执行的检查的数量和种类。

该列表包括开源和免费工具。 我故意排除了商业工具。 我确定还有更多工具。 如果您知道其中一些未在此处列出的信息,请在此帖子中添加评论。

别忘了分享!

参考: Java代码质量工具-我们的JCG合作伙伴 Orest Ivasiv的概述 ,摘自Knowledge Is Everything博客。


翻译自: https://www.javacodegeeks.com/2012/10/java-code-quality-tools-overview.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cuda版本查看_ubuntu安装CUDA

0 写在前面安装环境:ubuntu18.04以及GTX1050Ti笔记本为什么要安装CUDA? 参考百科,CUDA是英伟达推出的集成技术,通过该技术可利用GeForce 8 以后的GPU或者较新的Quadro GPU进行计算。例如典型的tensorflow-GPU和pyCUDA安装之前都要…

idea新建scala文件_IDEA maven项目中新建.scala文件

本文首发于我的博客[IDEA maven项目中新建.scala文件]分为三步第一步、IDEA中安装scala插件1、搜索安装File-Sittings-Plugins-搜索安装scala2、安装完成重启安装完成之后点击重启idea第二步、下载、安装、配置Scala1、下载安装Scala SDK本体搜索引擎搜索Scala SDK或者点我去Sc…

Log4j线程死锁–案例研究

此案例研究描述了影响Weblogic Portal 10.0生产环境的Apache Log4j线程争用问题的完整根本原因分析和解决方案。 它还将说明在开发和支持Java EE应用程序时适当的Java类加载器知识的重要性。 本文也是您提高线程转储分析技能和了解线程竞争条件的另一个机会。 环境规格 Java …

堆栈跟踪从何而来?

我认为,阅读和理解堆栈跟踪是每个程序员都必须具备的一项基本技能,以便有效地解决每种JVM语言的问题(另请参阅: 过滤日志中无关的堆栈跟踪行和首先记录引起异常的根本原因 )。 那么我们可以从一个小测验开始吗&#xf…

@select 怎么写存储过程_MySQL4:存储过程和函数

什么是存储过程简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理。本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用、查看、修改、删除存储过程和存储函数等。使用的数据库和表…

跨域访问-预请求及跨域常见问题

预请求 参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS#预请求 简而言之,在跨域并且尝试添加一些特殊头及自定义头的情况下,由于浏览器的安全机制,会加多一次OPTIONS预请求(询问请求&am…

mysql查询优化之一:mysql查询优化常用方式

一、为什么查询速度会慢? 一个查询的生命周期大致可以按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端。其中在“执行”阶段包含了大量为了检索…

抖音右上角一个小黄点是什么_抖音官方入驻视频号,释放了一个什么样的信号?...

专注视频号观察第 328 篇这几天,视频号生态新入驻了一个企业号,在圈里引起不少的轰动,因为这个号的名字叫做———抖音。这件事在圈里引发不少的轰动,很多人惊叹:“连抖音都来开视频号了,你还在等什么&…

Jenkins:部署JEE工件

随着持续集成和持续交付的出现 ,我们的构建被分为不同的步骤,以创建部署管道。 这些步骤中的一些步骤可以是例如编译和运行快速测试,运行慢速测试,运行自动验收测试或发布应用程序等。 部署流程的最后一步意味着将我们的产品&…

seafile 部署_Seafile开启webdav及读写性能测试

为什么要在seafile搞webdavSeafile 一直是一款可靠的文件同步web应用,经过个人测试,同一台机器上,seafile在传输文件时的速度比nextcloud要快(可能也与php的设置有关系),这是seafile的优势。但是&#xff0…

Python--校园网爬虫记

查成绩,算分数,每年的综合测评都是个固定的过程,作为软件开发者,这些过程当然可以交给代码去做,通过脚本进行网络请求获取数据,然后直接进行计算得到基础分直接填表就好了,查成绩再手动计算既容…

Spring–添加SpringMVC –第1部分

欢迎来到本教程的第四部分。 在这一部分中,我们将使用Spring MVC编写控制器和视图,并考虑我们的REST模型。 我们必须做的第一件事,就是根据目前的情况制作一个Web应用程序。 我们将web / WEB-INF文件夹添加到我们的项目根目录。 在WEB-INF内创…

access month函数用法_学会了这7个EXCEL日期函数技巧,老板再让你加班,你找我!...

日期函数,常用年月日,时分秒,星期,季度,求差值等,学会以下几个函数,老板再让你加班,你找我!1、记录当前时间(不随系统时间变化)NOW()函数与数据有效性结合,记…

meta 的作用 搜集

Meta标签中的format-detection属性及含义 format-detection翻译成中文的意思是“格式检测”&#xff0c;顾名思义&#xff0c;它是用来检测html里的一些格式的&#xff0c;那关于meta的format-detection属性主要是有以下几个设置&#xff1a;<meta name"format-detecti…

ThinkPHP 3.2.x 集成极光推送指北

3.2版本已经过了维护生命周期&#xff0c;官方已经不再维护&#xff0c;请及时更新至5.0版本 —— ThinkPHP 官方仓库 以上&#xff0c;如果有条件&#xff0c;请关闭这个页面&#xff0c;然后升级至 ThinkPHP 5&#xff0c;如果由于各种各样的原因无法升级至 TP 5 &#xff0c…

Java多线程——不变性与安全发布

1、不变性 某个对象在被创建后其状态就不能被修改&#xff0c;那么这个对象就称为不可变对象&#xff0c;不可变对象一定是线程安全的。不可变对象很简单。他们只有一种状态&#xff0c;并且该状态由构造函数来控制。 当满足以下条件时&#xff0c;对象才是不可变的&#xff1a…

中tr不能显示字符_垃圾文本识别中基本操作指南和错误总结,第三部分

创建模型需要用到机器学习的库&#xff0c;所以我们先下载sklearn库sklearn库下载完成后再输入库文件&#xff0c;就可以完美运行。然后就是划分测试集和训练集&#xff0c;需要注意的是&#xff0c;在从数据处理函数中导入数据时&#xff0c;足足运行了有将近30多秒&#xff0…

(转载)20分钟读懂程序集

转自&#xff1a;http://www.cnblogs.com/damonlan/p/3221347.html 说到程序集&#xff0c;我刚开始对这个名词特别的郁闷&#xff01;~。然后 前些天花了些时间 好好读了一下&#xff0c;现在比较清晰了&#xff0c;把一些书上看到的 记下来&#xff0c;以飨读者。希望没浪费你…

大数据胸_喂母乳会导致胸下垂?!你被这个谣言骗了多少年?

很多人认为&#xff0c;给宝宝喂奶会导致胸下垂。有些爱美的妈妈&#xff0c;甚至在宝宝出生6个月后就着急断奶。那么&#xff0c;喂奶真的会导致胸下垂么&#xff1f;给大家讲两个真实的调查结果哈~2004年的一次针对496名新妈妈的调查结果显示&#xff0c;有75%的母乳喂养母亲…

自制ACL+DHCP实验(初版)

&#xff08;实验用gns模拟器&#xff09; ACL 实验拓扑&#xff1a; 实验要求&#xff1a; 1.1.1.1→3.3.3.3 不通 11.11.11.11→3.3.3.3 通 2.2.2.2→3.3.3.3 通 实验步骤&#xff1a; 步骤一&#xff1a;基本配置 R1&#xff1a; R1#conf t R1(config)#int lo0 R1(config-if…