idea,配置checkstyle 【提高代码质量,检查代码规范的工具 】Checkstyle,FindBugs,PMD,Jtest

提高代码质量,检查代码规范的工具

有几款代码质量:

PMD

是一个源代码分析器。发现常见的编程缺陷像未使用的变量,空的catch块,不必要的对象的创建,等等。支持java,JavaScript,Salesforce.com的先端,PLSQL,Apache速度,XML。此外,它包括CPD,复制粘贴探测器。

官网地址:http://pmd.github.io/

FindBugs

FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将 字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。不是通过分析类文件的形式或结构来确定程序的意图,而是通常使用 Visitor 模式(请参阅 参考资料)。图 1 显示了分析一个匿名项目的结果(为防止可怕的犯罪,这里不给出它的名字):
在FindBugs的GUI中,需要先选择待扫描的.class文件(FindBugs其实就是对编译后的class进行扫描,藉以发现一些隐藏的bug。)。如果你拥有这些.class档对应的 源文件,可把这些.java文件再选上,这样便可以从稍后得出的报告中快捷的定位到出问题的代码上面。此外,还可以选上工程所使用的library,这样似乎可以帮助FindBugs做一些高阶的检查,藉以发现一些更深层的bug。
选定了以上各项后,便可以开始检测了。检测的过程可能会花好几分钟,具体视工程的规模而定。检测完毕可生成一份详细的报告,藉由这份报告,可以发现许多代码中间潜在的bug。比较典型的,如引用了空 指针(null pointer dereference), 特定的资源(db connection)未关闭,等等。如果用人工检查的方式,这些bug可能很难才会被发现,或许永远也无法发现,直到运行时发作…当除掉了这些典型的(classic) bug后,可以确信的是,我们的系统稳定度将会上一个新的台阶。

Jtest

Jtest 是 Parasoft 公司推出的一款针对 Java 语言的自动化代码优化和测试工具,它通过自动化实现对 Java 应用程序的单元测试和编码规范校验,从而提高代码的可靠性以及 Java 软件开发团队的开发效率。

       静态代码分析是指不运行源程序,仅通过分析源程序的语法、结构、接口等来检查程序正确性,找出代码隐藏的缺陷之处。

Jtest 的静态代码分析功能能够按照其内置的超过 800 条的 Java 编码规范自动检查并纠正这些隐蔽且难以修复的编码错误。同时,还支持用户自定义编码规则,帮助用户预防一些特殊用法的错误。


CheckStyle

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

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

下面主要介绍IDEA,如何配置,使用checkstyle

1、CheckStyle插件安装和使用

一,打开settings的plugins,点击查找CheckStyle-IDEA安装,如果查找不到,Browse repositories...
idea,配置checkstyle 【提高代码质量,检查代码规范的工具 】Checkstyle,FindBugs,PMD,Jtest_第1张图片

二,使用IDEA的插件生效,
idea,配置checkstyle 【提高代码质量,检查代码规范的工具 】Checkstyle,FindBugs,PMD,Jtest_第2张图片

三、添加自己的配置文件,要检查的项目,
idea,配置checkstyle 【提高代码质量,检查代码规范的工具 】Checkstyle,FindBugs,PMD,Jtest_第3张图片

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

四、将checkstyle.xml配置文件粘贴如下 :、
xml version="1.0"?>
module PUBLIC
        "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
        "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">

<module name="Checker">
    
    
    
    
    <module name="NewlineAtEndOfFile"/>

    
    <module name="Translation"/>
    
    <module name="FileLength">
        <property name="max" value="1500"/>
    module>

    
    <module name="FileTabCharacter"/>

    
    <module name="RegexpSingleline">
        <property name="format" value="\s+$"/>
        <property name="minimum" value="0"/>
        <property name="maximum" value="0"/>
        <property name="message" value="Line has trailing spaces."/>
    module>

    
    <module name="TreeWalker">
        
        
        <module name="JavadocMethod">
            <property name="tokens" value="METHOD_DEF" />
        module>
        
        <module name="JavadocType"/>
        
        <module name="JavadocVariable"/>
        
        <module name="JavadocStyle">
            <property name="checkFirstSentence" value="false"/>
        module>
        
        <module name="TodoComment"/>

        
        
        <module name="LocalFinalVariableName" />
        
        <module name="LocalVariableName" />
        
        <module name="PackageName">
            <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" />
            <message key="name.invalidPattern" value="包名 ''{0}'' 要符合 ''{1}''格式."/>
        module>
        
        <module name="StaticVariableName" />
        
        <module name="TypeName">
            <property name="severity" value="warning"/>
            <message key="name.invalidPattern" value="名称 ''{0}'' 要符合 ''{1}''格式."/>
        module>
        
        <module name="MemberName" />
        
        <module name="MethodName" />
        
        <module name="ParameterName " />
        
        <module name="ConstantName" />

        
        
        <module name="ArrayTypeStyle"/>
        
        
        
        <module name="UpperEll"/>


        
        
        
        
        
        
        
        
        
        
        
        
        

        
        


        
        
        <module name="AvoidStarImport"/>
        
        <module name="IllegalImport"/>
        
        <module name="RedundantImport"/>
        
        <module name="UnusedImports" />

        
        
        <module name="LineLength">
            <property name="max" value="150" />
        module>
        
        <module name="MethodLength">
            <property name="tokens" value="METHOD_DEF" />
            <property name="max" value="150" />
        module>
        
        <module name="ParameterNumber">
            <property name="max" value="10" />
            <property name="ignoreOverriddenMethods" value="true"/>
            <property name="tokens" value="METHOD_DEF" />
        module>

        
        
        <module name="MethodParamPad" />
        
        <module name="TypecastParenPad" />
        
        
        
        
        
        <module name="NoWhitespaceAfter"/>
        
        <module name="NoWhitespaceBefore"/>
        
        <module name="OperatorWrap"/>
        
        <module name="ParenPad"/>
        
        <module name="WhitespaceAfter"/>
        
        <module name="WhitespaceAround"/>


        
        
        <module name="ModifierOrder"/>
        
        <module name="RedundantModifier"/>


        
        
        <module name="AvoidNestedBlocks"/>
        
        <module name="EmptyBlock"/>
        
        <module name="LeftCurly"/>
        
        <module name="NeedBraces"/>
        
        <module name="RightCurly"/>


        
        
        
        
        <module name="EmptyStatement"/>
        
        <module name="EqualsHashCode"/>
        
        <module name="HiddenField">
            <property name="tokens" value="VARIABLE_DEF"/>
        module>
        
        <module name="IllegalInstantiation"/>
        
        <module name="InnerAssignment"/>
        
        <module name="MagicNumber">
            <property name="ignoreNumbers" value="0, 1"/>
            <property name="ignoreAnnotation" value="true"/>
        module>
        
        <module name="MissingSwitchDefault"/>
        
        <module name="SimplifyBooleanExpression"/>
        
        <module name="SimplifyBooleanReturn"/>

        
        
        
        
        <module name="FinalClass"/>
        
        <module name="HideUtilityClassConstructor"/>
        
        <module name="InterfaceIsType"/>
        
        <module name="VisibilityModifier"/>


        
        

        
        
    module>
module>

五、运行并看执行效果
点击要check的文件,就会根据您配置的规范,提示出一系统的问题。




你可能感兴趣的:(开发)