`

11款用于优化、分析源代码的Java工具

    博客分类:
  • Java
阅读更多

Below is a list of some tools that can help you examine your Java source code for potential problems:

1. PMD from http://pmd.sourceforge.net/
License: PMD is licensed under a “BSD-style” license

PMD scans Java source code and looks for potential problems like:

* Possible bugs – empty try/catch/finally/switch statements
* Dead code – unused local variables, parameters and private methods
* Suboptimal code – wasteful String/StringBuffer usage
* Overcomplicated expressions – unnecessary if statements, for loops that could be while loops
* Duplicate code – copied/pasted code means copied/pasted bugs

You can download everything from here, and you can get an overview of all the rules at the rulesets index page.

PMD is integrated with JDeveloper, Eclipse, JEdit, JBuilder, BlueJ, CodeGuide, NetBeans/Sun Java Studio Enterprise/Creator, IntelliJ IDEA, TextPad, Maven, Ant, Gel, JCreator, and Emacs.

PMD能够扫描Java 源代码,查找类似以下的潜在问题:

可能的bug——try/catch/finally/switch语句中返回空值。

死代码——未使用的局部变量、参数、私有方法。

不理想的代码——使用String/StringBuffer。

过于复杂的表达式——没有必要使用if语句、while循环可以代替for循环。

重复代码——复制/粘贴的代码引发的bug。

PMD集成了JDeveloper, Eclipse, JEdit, JBuilder, BlueJ, CodeGuide, NetBeans/Sun Java Studio Enterprise/Creator, IntelliJ IDEA, TextPad, Maven, Ant, Gel, JCreator, 以及 Emacs。

 

2. FindBug from http://findbugs.sourceforge.net
License: L-GPL

FindBugs, a program which uses static analysis to look for bugs in Java code. And since this is a project from my alumni university (IEEE – University of Maryland, College Park – Bill Pugh) , I have to definitely add this contribution to this list.

FindBug是一个使用静态方法来查找Java代码漏洞的程序。

3. Clover from http://www.cenqua.com/clover/
License: Free for Open Source (more like a GPL)

Measures statement, method, and branch coverage and has XML, HTML, and GUI reporting. and comprehensive plug-ins for major IDEs.

* Improve Test Quality
* Increase Testing Productivity
* Keep Team on Track

Fully integrated plugins for NetBeans, Eclipse , IntelliJ IDEA, JBuilder and JDeveloper. These plugins allow you to measure and inspect coverage results without leaving the IDE.
Seamless Integration with projects using Apache Ant and Maven. * Easy integration into legacy build systems with command line interface and API.
Fast, accurate, configurable, detailed coverage reporting of Method, Statement, and Branch coverage.
Rich reporting in HTML, PDF, XML or a Swing GUI
Precise control over the coverage gathering with source-level filtering.
Historical charting of code coverage and other metrics.
Fully compatible with JUnit 3.x & 4.x, TestNG, JTiger and other testing frameworks. Can also be used with manual, functional or integration testing.

这个插件允许你在不离开IDE的环境条件下来衡量和检测覆盖效果。该插件通过使用Apache Ant、Maven来无缝集成其它项目,可以通过命令行界面和API系统轻松集成到传统的构建系统中。

 

该插件的特性:

支持快速、准确、可配置的方法,语句等。

支持丰富的报告格式:HTML、PDF、XML、以及Swing GUI。

精确控制源代码级别的过滤。

支持代码覆盖以及其它指标的图表。

完全兼容JUnit 3.x & 4.x, TestNG, JTiger以及其它的测试框架。

 

4. Macker from http://innig.net/macker/
License: GPL

Macker is a build-time architectural rule checking utility for Java developers. It’s meant to model the architectural ideals programmers always dream up for their projects, and then break — it helps keep code clean and consistent. You can tailor a rules file to suit a specific project’s structure, or write some general “good practice” rules for your code. Macker doesn’t try to shove anybody else’s rules down your throat; it’s flexible, and writing a rules file is part of the development process for each unique project.

Macker是一个适用于Java开发人员用来检查架构规则的工具。你可以定制一个适合特定项目架构的规则文件,也可以为您的代码撰写通用的规则说明。

5 EMMA from http://emma.sourceforge.net/
License: EMMA is distributed under the terms of Common Public License v1.0 and is thus free for both open-source and commercial development.

Reports on class, method, basic block, and line coverage (text, HTML, and XML).

EMMA can instrument classes for coverage either offline (before they are loaded) or on the fly (using an instrumenting application classloader).

Supported coverage types: class, method, line, basic block. EMMA can detect when a single source code line is covered only partially.

Coverage stats are aggregated at method, class, package, and “all classes” levels.

Output report types: plain text, HTML, XML. All report types support drill-down, to a user-controlled detail depth. The HTML report supports source code linking.

Output reports can highlight items with coverage levels below user-provided thresholds.

Coverage data obtained in different instrumentation or test runs can be merged together.

EMMA does not require access to the source code and degrades gracefully with decreasing amount of debug information available in the input classes.

EMMA can instrument individial .class files or entire .jars (in place, if desired). Efficient coverage subset filtering is possible, too.

Makefile and ANT build integration are supported on equal footing.

EMMA is quite fast: the runtime overhead of added instrumentation is small (5-20%) and the bytecode instrumentor itself is very fast (mostly limited by file I/O speed). Memory overhead is a few hundred bytes per Java class.

EMMA is 100% pure Java, has no external library dependencies, and works in any Java 2 JVM (even 1.2.x).

EMMA支持的覆盖类型:方法、类等。

输出报告的格式为:文本、HTML、XML。

输出报告可以高亮显示某些项目。

EMMA不需要访问源代码,可以在输入类中减少调试的信息。

 

6. XRadar from http://xradar.sourceforge.net/
License: BSD (me thinks)

The XRadar is an open extensible code report tool currently supporting all Java based systems. The batch-processing framework produces HTML/SVG reports of the systems current state and the development over time – all presented in sexy tables and graphs.

The XRadar gives measurements on standard software metrics such as package metrics and dependencies, code size and complexity, code duplications, coding violations and code-style violations.

XRadar是一个开放的、为代码生成可扩展报告的工具。目前支持基于Java的所有系统。批量处理的框架可以用来生成HTML/SVG系统的报告。Xradar可以估量代码的大小、复杂性以及代码的重复性、依赖性等。

7. Hammurapi from Hammurapi Group
License: (if anyone knows the license for this email me Venkatt.Guhesan at Y! dot com)

Hammurapi is a tool for execution of automated inspection of Java program code. Following the example of 282 rules of Hammurabi’s code, we are offered over 120 Java classes, the so-called inspectors, which can, at three levels (source code, packages, repository of Java files), state whether the analysed source code contains violations of commonly accepted standards of coding.

Relevant Links:

http://en.sdjournal.org/products/articleInfo/93

http://wiki.hammurapi.biz/index.php?title=Hammurapi_4_Quick_Start

Hammurapi是一款执行Java程序代码的自动检测工具。提供的实例中含有282条Hammurapi代码规则,提供了120多个Java类,这款所谓的检测工具,可以从三个级别来检测代码是否违背了编码标准。

8. Relief from http://www.workingfrog.org/
License: GPL

Relief is a design tool providing a new look on Java projects. Relying on our ability to deal with real objects by examining their shape, size or relative place in space it gives a “physical” view on java packages, types and fields and their relationships, making them easier to handle.

Relif是一款设计工具,为Java项目提供了崭新的面貌。我们可以充分发挥自己的能力来处理真实的实例——通过检测大小、形状、关系等来简化处理过程。

9. Hudson from http://hudson-ci.org/
License: MIT

Hudson is a continuous integration (CI) tool written in Java, which runs in a servlet container, such as Apache Tomcat or the GlassFish application server. It supports SCM tools including CVS, Subversion, Git and Clearcase and can execute Apache Ant and Apache Maven based projects, as well as arbitrary shell scripts and Windows batch commands.

Hudson 是一个持续集成工具,使用Java编写,运行在servlet容器中,比如Apache Tomcat或者或GlassFish应用服务器。它支持SCM工具,包括CVS、Subversion、Git和ClearCase。它可以执行 Apache Ant、基于Apache Maven的项目、以及任意的shell脚本和 Windows批处理命令。

10. Cobertura from http://cobertura.sourceforge.net/
License: GNU GPL

Cobertura is a free Java tool that calculates the percentage of code accessed by tests. It can be used to identify which parts of your Java program are lacking test coverage. It is based on jcoverage.

Cobertura是一个免费的基于jcoverage的Java工具,用于计算代码被测试访问的百分比,它可以被用来确定Java程序中的缺少部分的测试覆盖率。

11. SonarSource from http://www.sonarsource.org/ (recommended by Vishwanath Krishnamurthi – thanks)
License: LGPL

Sonar is an open platform to manage code quality. As such, it covers the 7 axes of code quality:

Architecture & Design, Duplications, Unit Tests, Complexity, Potential bugs, Coding rules, Comments.

Sonar是一个管理代码质量的开放平台。因此,它涵盖了代码质量的7个方面:架构与设计、重复、单元测试、复杂性、潜在错误、编码规则、评论。

 

分享到:
评论

相关推荐

    java源代码查看工具.zip

    Java源代码查看工具是一款专为Java开发者设计的实用软件,它允许用户查看并理解已编译的Java类文件(.class)的源代码,即使原始的.java文件不可用。这款工具支持多种Java编译器产生的.class文件,确保了广泛的兼容...

    基于JavaParser的代码调用链分析,可以用于分析Java代码的方法调用链.zip

    5. **应用分析结果**:分析结果可以用于优化代码,例如减少不必要的间接调用,避免循环依赖,或者改进设计以提高代码的可读性和可维护性。 除了上述基本步骤,还可以进行更复杂的分析,如: - **静态分析**:检查...

    java词法分析器源代码

    它可能是一个自定义的词法分析器实现,用于处理Java源代码,也可能具备通用性,能够处理其他编程语言。Eclipse是一个流行的Java集成开发环境,使用者可以通过Eclipse来查看和运行这个源代码,进行学习和调试。 在...

    C/C++/Java 源代码注释清除工具

    为了适应这些情况,一种专门用于清除C、C++和Java源代码中注释的工具应运而生。本文将深入探讨这款工具的设计初衷、功能特点、操作便利性以及它在软件开发中的实际应用价值。 首先,这款“C/C++/Java 源代码注释...

    java jdk源代码

    Java JDK源代码是Java开发工具包的原始代码,对于任何想要深入理解Java语言工作原理的开发者来说,它都是一个无价的学习资源。JDK包含了Java运行环境、编译器、类库以及各种工具,它的源代码揭示了Java平台的内部...

    五子棋java全套源代码

    【五子棋Java全套源代码】是一个基于Java Swing开发的桌面应用程序,专为五子棋爱好者设计。在这款游戏中,玩家可以与计算机进行对弈,体验经典的五子棋玩法。Swing是Java的一个图形用户界面(GUI)工具包,它允许...

    Java反编译工具,JAVA查看源文件、jar包里源代码的工具

    Java反编译是Java开发过程中一个重要的辅助工具,主要用于查看已编译的`.class`文件或`.jar`包中的源代码。在某些情况下,我们可能需要查看这些源代码,例如学习某个开源库的工作原理,或者排查Java应用的问题,而...

    BBS论坛源代码JAVA版

    【标题】"BBS论坛源代码JAVA版"是基于JAVA编程语言实现的一款在线讨论平台的源码,旨在提供一个互动交流的空间,用户可以在这里发布话题、回复他人、进行讨论。这款源码对于学习JAVA Web开发,尤其是对BBS系统设计感...

    软件测试工具,静态源代码测试工具

    PMD是一款开源的Java源代码分析工具,它能够检测出不规范、可能错误的代码,并提供改进建议。PMD支持多种编程语言,包括Java、C#和XML。其核心功能包括:未使用的变量检测、空句检测、避免使用复杂的表达式等。通过...

    java画图工具的源代码

    Java画图工具源代码分析 Java作为一种面向对象的编程语言,具有丰富的图形用户界面(GUI)库,使得开发画图工具变得相对简单。本篇将深入解析标题为"java画图工具的源代码"的项目,它展示了如何利用Java语言构建一...

    C,C++,Java源代码分析器

    在计算机科学领域,源代码分析器是一种至关重要的工具,它能帮助开发者理解和优化他们的程序。本文将深入探讨一个针对C、C++和Java语言的源代码分析器,虽然其用户界面为DOS形式且全英文,但这并不妨碍我们挖掘其...

    实验7 Java源代码分析程序

    Java源代码分析程序是一种用于理解、检查或操作Java源代码的工具,它通常涉及语法解析、语义分析以及代码质量检查等步骤。在本实验中,我们将探讨Java初级阶段如何创建一个简单的源代码分析程序。 一、Java语言基础...

    Java源代码反编译专家

    在Java开发领域,有时我们可能会遇到只拥有编译后的.class文件而没有对应的.java源代码的情况,此时,就需要借助Java源代码反编译工具来帮助我们理解并分析程序的运行逻辑。 "Java源代码反编译专家"是一款专为此...

    1.源代码统计工具,用于统计c/C++,JAVA,JS,XML,JSP等格式代码

    源代码统计工具是一种重要的软件开发辅助工具,它主要用于分析项目中的源代码,提供关于代码量、文件数量、语言分布、复杂度等各种统计信息。这样的工具对于项目管理、代码审查、性能优化以及理解代码库的规模和结构...

    Java转C++代码工具 J2C

    Java转C++代码工具J2C是一个专门用于将Java源代码转换为等效C++代码的工具。这个工具对于那些需要在不支持Java或者需要利用C++特定性能特性的环境中迁移Java项目的人来说非常有用。在深入探讨J2C之前,我们先理解...

    JAVA源代码反编译.rar

    在给定的“JAVA源代码反编译.rar”压缩包中,可能包含了一款名为“1.4版本”的Java反编译工具,用于帮助用户查看和理解Java字节码。 Java反编译工具有很多,例如JAD (Java Decompiler),FernFlower,Procyon等。...

    java版本词法、语法分析器以及三地址代码生成实验源代码

    它将源代码分解成一个个被称为“标记”(Token)的单元,每个标记代表一种语言元素,如关键字、标识符、常量或运算符。在Java实现中,词法分析器通常会基于正则表达式来识别和提取这些标记,例如使用Java的`java....

    Apk 反编译成Java源代码工具

    本篇文章将详细介绍如何使用"Apk 反编译成Java源代码工具"来获取APK中的源码。 首先,我们需要了解反编译的基本概念。反编译是将已编译的二进制代码转换回接近原始源代码的过程。在Android世界里,APK中的代码主要...

    javacore分析工具

    JavaCore分析工具是一种在Java应用程序出现问题时,如CPU占用过高或出现Out Of Memory (OOT)错误时,用于诊断和分析的利器。它主要用于Java虚拟机(JVM)的故障排查,尤其是在使用像Websphere或Weblogic这样的企业级...

    Java工具_源代码抽取_java-source-code-extract202103.rar

    标题“Java工具_源代码抽取_java-source-code-extract202103.rar”指的是一个专门用于Java项目的源代码抽取工具。这个工具的主要目的是帮助开发者从大型Java项目中分离出小应用或者子模块,以便它们可以独立运行或者...

Global site tag (gtag.js) - Google Analytics