`
jeast
  • 浏览: 71825 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

JAVA代码审查工具

阅读更多

1. 源代码的质量平台 Sonar

是一个开源平台,用于管理Java源代码的质量。从 Sonar 1.6 版本开始,Sonar从一个质量数据报告工具,转变成为现在的代码质量管理平台。

主要特点:
•代码覆盖:通过单元测试,将会显示哪行代码被选中
•改善编码规则
•搜寻编码规则:按照名字,插件,激活级别和类别进行查询
•项目搜寻:按照项目的名字进行查询
•对比数据:比较同一张表中的任何测量的趋势

 

 

2. Java代码质量评价 JDepend

JDepend一个开放源代码的可以用来评价Java程序质量的优秀工具,它遍历Java class的文件目录,以Java包(package)为单位,为每一个包/类自动生成 包的依赖程度,稳定性,可靠度等的评价报告,根据这些报告,我们可以得到包或类之间的依赖关系,并分析出包的稳定程度,抽象程度,是否存在循环依耐关系 等。

我们可以根据JDepend给出的报告数据,分析出我们的包是否是可靠的,稳定的,健壮的包,是否符合面向对象的设计原则。

一个具有稳定性,扩展性,可维护性的软件系统要求系统设计遵循面向对象的设计原则。一般来说,面向对象的设计原则要求满足高聚合,低耦合,禁止循环依赖等基本原则。

如果存在包与面向对象的设计原则有抵触,则有必要对这些包加以重新设计或抽象。
JDepend的主要功能
JDepend生成的Java包的质量评价报告主要包括:
 Number of Classes and Interfaces:实现类与抽象接口的数目
面向的设计原则之一The Stable Abstractions Principle (SAP):稳定抽象等价原则指出了包的稳定程度与它的抽象程度(接口的数目)成正比,也就是说,一个包内包含的接口所占的比重越大,这个包就越稳定。
 Abstractness (A):包的抽象度。指一个包内包含的抽象类或接口占整个包中的类的比重。该值处于0,1之间,若A=0,说明包内不包含任何抽象类或接口;若A=1,说明包内全部是抽象类或接口。包的抽象度与稳定性之间的关系上面已经作了说明。
 Afferent Couplings (Ca):向心耦合。依赖该包(包含的类)的外部包(类)的数目(i.e. incoming dependencies),该数值越大,说明该包的担当的职责越大,也就越稳定。
 Efferent Couplings (Ce):离心耦合。被该包依赖的外部包的数目(i.e. outgoing dependencies),该数值越大,说明该包越不独立(因为依赖了别的包),也越不稳定。
 Instability (I):衡量一个包的不稳定程度。I=Ce/(Ce+Ca)。它的值处于[0,1]之间。I=0时说明包是最稳定的,反之I=1则说明包极不稳定。
 Distance from the Main Sequence (D): 该指标主要用来评价包的抽象程度与稳定程度的平衡关系,它可以用二维直线图 A + I = 1 来表示。D=abs((A + I) - 1),也就是说D为 一个包的抽象度 + 包的不稳定程度 - 1  的绝对值。一个理想的包是:完全抽象的(A=1),非常稳定的(I=0),这时D=0;或者是:完全具体类构成的包(A=0),非常不稳定的 (I=1),这时同样也有D=0。D=0说明包的抽象程度与稳定程度是平衡的,反之D=1说明包的平衡程度被严重破坏。
 Package Dependency Cycles:包的循环依赖度。
面向对象的设计原则之一:The Acyclic Dependencies Principle (ADP) - OO设计的无环依赖原则要求包之间不能有循环依赖关系。
JDepend为我们提供了上述许多高级功能,为我们设计健壮的包/类提供了重要的参考数据,是一个不可多得的优秀工具。

 


3. Java代码检查 CheckStyle

 CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来。

CheckStyle检验的主要内容
·Javadoc注释
·命名约定
·标题
·Import语句
·体积大小
·空白
·修饰符
·块
·代码问题
·类设计
·混合检查(包活一些有用的比如非必须的System.out和printstackTrace)

从上面可以看出,CheckStyle提供了大部分功能都是对于代码规范的检查,而没有提供象PMD和Jalopy那么多的增强代码质量和修改代码的功能。但是,对于团队开发,尤其是强调代码规范的公司来说,它的功能已经足够强大。


4. Java代码审查工具 JavaViewer

•代码度量能度量Halstead、LOC、易用性、专一性、封装性等指标;
•报告输出以Html格式输出代码的审查报告及代码清单;
•源码显示语法彩色编码,审查要素与源代码联动显示;
•静态审查涵盖文件级、类级、函数级等三个级别的视图显示;
•图文对照自动生成类图、统计图,并与相关代码对照审查;
•规则定制注释规则、命名规则的自定义设置与重复利用,提高知识共享度;
•数据字典支持SQL Server 2000和Oracle9i数据库中的数据库设计文件的浏览及相关文档的输出。


5. 代码度量工具 JavaNCSS
   JavaNCSS 是一个开源的度量工具,提供圈复杂度的方法级的值。

 

6. Eclipse代码检测插件 Smelly

Smelly这个插件能够自动探测Java代码中的Bad Smells。

Smelly在软件开发中非常有用,它当前能够探测以下这些Bad Smells:

1.Data Class(纯数据类):Class只有fields或get/set属性,没有任何行为。
2.Large Class(庞大的类):单一类做过多的事情。
3.Long Method(过长的Method):过长的代码会使得Method难以理解和维护,应该将该Method分解成多个独立功能的Method。
4.High Comment Density(过多的注释):注释过多意味着该段代码难于理解。
5.Long Parameters List(过长的参数列表):一个Method中传入过长的参数列表,使得参数列难以理解。修改参数列时将会使得参数前后不一致。
6.Switch Statements(Switch语句):同样的Switch语句出现在不同的方法或不同的Class中,这样当需要增加新的CASE分支或者修改CASE分支内语句时,就必须找到所有的地方,然后进行修改。

 

 

7.Java运行分析工具 jSonde

 jSonde能够帮助你分析java应用程序。她能够生成序列图、CPU和内存的性能评估以及不同格式的汇总:如jar依赖等。使用jSonde不需要特别的知识,她适用于不同的操作系统和Java环境。

jSonde主要由2个组件:

1、    一个配置在Java进程中的代理,是为了收集信息
2、    一个用来显示代理收集的信息的GUI


8. 静态代码分析工具 CodeSecure

  CodeSecure V4是业界领先的静态代码分析工具,用于构建安全的应用程序。

 

 

9. 代码覆盖率检查工具 EMMA
     EMMA 是一个用于检测和报告 JAVA 代码覆盖率的开源工具。它不但能很好的用于小型项目,很方便得得出覆盖率报告,而且适用于大型企业级别的项目。
EMMA 有许多优点,首先你能免费得到它,并把它用于自己项目的开发。它支持许多种级别的覆盖率指标:包,类,方法,语句块(basic block)和行,特别是它能测出某一行是否只是被部分覆盖,如条件语句短路的情况。它能生成 text,xml,html 等形式的报告,以满足不同的需求,其 html 报告提供下钻功能,我们能够从 package 开始一步步链接到我们所关注的某个方法。EMMA 能和 Makefile 和 Ant 集成,便于应用于大型项目。特别还须指出的一点是,EMMA 的效率很高,这对于大型项目来说很重要。

EMMA 是通过向 .class 文件中插入字节码的方式来跟踪记录被运行代码信息的。EMMA 支持两种模式:On the fly 和 Offline 模式。

On the fly 模式往加载的类中加入字节码,相当于用 EMMA 实现的 application class loader 替代原来的 application class loader。

Offline 模式在类被加载前,加入字节码。

On the fly 模式比较方便,缺点也比较明显,如它不能为被 boot class loader 加载的类生成覆盖率报告,也不能为像 J2EE 容器那种自己有独特 class loader 的类生成覆盖率报告。这时,我们能求助于 Offline 模式。

EMMA 也支持两种运行方式:Command line 和 Ant。

命令行一般和 On the fly 模式一起适用,对于简单的项目能够快速产生覆盖率报告。通过 Ant task 来运行 EMMA 的话,特别适用于大型的项目。

 

分享到:
评论

相关推荐

    Java代码审查工具

    Java代码审查工具是提高软件质量和团队协作效率的重要手段。代码评审是一种系统性的源代码检查过程,旨在确保代码符合编程标准,减少错误,提高可维护性和可读性,同时也能促进团队成员之间的知识共享。在这个过程中...

    JAVA代码优化工具

    以下是关于"JAVA代码优化工具"的一些详细知识点: 1. **JProfiler**: JProfiler是一款强大的Java性能分析器,它提供了详细的内存分析,CPU剖析,线程监控等功能。通过可视化界面,开发者可以识别和解决内存泄漏、...

    轻量级代码审查工具 JavaViwer1.0说明书

    综上所述,JavaViewer 1.0 是一个全面的代码审查工具,通过其强大的功能和友好的用户界面,为Java开发者提供了有力的支持,确保代码质量的同时提高了开发效率。无论是个人开发者还是团队协作,都能从中受益。

    java代码自动生成工具

    Java代码自动生成工具是一种高效开发辅助软件,它能够根据预设的模板或规则,自动创建出符合特定规范的Java源代码。这样的工具极大地提升了开发效率,减少了程序员在编写重复性结构化代码上的时间,使他们可以更加...

    java代码统计工具

    3. **代码审查**:在代码审查过程中,统计工具可以提供一个基准,以比较不同开发者的工作量和编码风格。 4. **软件度量**:这些统计数据可用于软件度量和度量标准,如COCOMO(Constructive Cost Model)模型,以预测...

    JAVA代码检查工具

    Java代码检查工具是一种重要的开发辅助软件,主要用于确保代码符合特定的编程规范和最佳实践,从而提高代码质量和可维护性。这些工具通常作为集成开发环境(IDE)如MyEclipse的插件存在,允许开发者在编写代码的过程...

    C# to Java 代码转换工具.zip

    7. **代码优化**:在转换过程中,工具可能还会对生成的Java代码进行优化,以符合Java编程的最佳实践和风格指南。 8. **用户界面**:为了方便用户,工具可能包含一个图形用户界面,允许用户上传C#代码文件,然后直接...

    Java代码统计工具

    Java代码统计工具是一款高效实用的软件,专门针对Java和JSP编程语言的代码进行分析与统计。这款工具在开发和维护过程中起到了重要作用,因为它能够帮助程序员了解项目代码的规模、复杂性和质量,从而进行更有效的...

    java2python--java代码转python工具

    Java到Python的转换工具,如"java2python",是一个重要的软件开发辅助工具,它能够帮助程序员将已有的Java代码转换成Python代码,以便在Python环境中执行或进行进一步的开发工作。这种转换过程涉及到多种语言特性和...

    Java转C++代码工具 J2C

    Java转C++代码工具J2C是一个专门用于将Java源代码转换为等效C++代码的工具。这个工具对于那些需要在不支持Java...转换工具只是第一步,后续的工作包括代码审查、调试和优化,才能确保转换后的代码既有效率又易于维护。

    代码统计工具【java】

    这些统计数据对于项目管理、代码审查、性能优化和重构决策都有着深远的影响。 1. **代码统计工具选择**: 在Java领域,有许多代码统计工具可供选择。例如,`CLOC (Count Lines of Code)`是一个流行的开源工具,它...

    java代码比对覆盖工具

    Java代码比对覆盖工具是一种非常实用的开发辅助软件,它主要功能是帮助开发者在两份代码之间进行差异分析,以快速定位和理解代码修改的部分。这样的工具在版本控制、协同开发或者代码审查过程中起着至关重要的作用。...

    JAVA代码检查工具(开源)

    Java代码检查工具是开发者在编写和维护代码时的重要辅助手段,它们可以帮助我们发现潜在的错误、不符合编程规范的地方,以及可能影响性能的问题。开源的Java代码检查工具有很多种,这些工具不仅免费,而且有着丰富的...

    asp 代码审查工具

    ### ASP 代码审查工具知识点详解 #### 一、代码审查概览 代码审查(Code Review)作为软件开发过程中至关重要的一个环节,旨在提高代码质量、减少缺陷并促进团队协作。通常,这一过程涉及代码创作者与审查人员之间...

    JAVA代码统计工具,可以按人统计,很不错

    Java代码统计工具是一种用于分析和量化Java源代码的软件,主要功能是对代码量进行统计,以便于项目管理和团队协作。这种工具通常可以帮助开发者、项目经理和质量保证人员了解项目的规模、复杂性和开发进度。它们能够...

    java代码大全 工具书

    在编写代码的过程中,开发者需要完成一系列具体任务,如验证前提条件、设计和实现类和子程序、选择合适的控制结构、进行单元测试和集成测试、代码审查、代码美化、组件集成以及性能优化等。 除了构建活动,还有许多...

    代码审查代码审查代码审查

    - **范围**:针对Java代码审查流程,适用于所有参与系统开发的团队成员,包括技术负责人、后端开发、测试人员和运维人员。 - **读者对象**:适用于所有参与系统开发的团队成员,旨在指导他们的代码审查工作。 2. ...

    c#代码转java代码工具

    综上所述,使用"C#代码转Java代码工具"可以大大简化跨语言的转换工作,但需要注意的是,自动转换工具可能无法完全替代人工审查和修改。开发者仍然需要对生成的Java代码进行检查和调整,确保其正确性和效率。此外,...

    Java 代码转VB VC的小工具 特别版

    Java 和 VB (Visual Basic)、...然而,任何自动化转换工具都不能完全取代人工审查和修改,特别是在处理复杂逻辑或定制代码时。开发者在使用这样的工具时,仍需要结合自身的编程经验,对转换结果进行必要的调整和完善。

Global site tag (gtag.js) - Google Analytics