`
dr2tr
  • 浏览: 138465 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CheckStyle的自定义开发

阅读更多

CheckStyle,正如名字所表示的,是用来检查Java Style的。它的开发站点(http://checkstyle.sourceforge.net/index.html)上的说明是“Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. ” 由于其开源,这个工具在公司开发项目时的code review方面有很好的应用(当然,WSAD/RAD本身也有比较强大的code review 功能,但是笔者不知道能不能够自定义)。本文主要是想讲一下在CheckStyle的基础上,自定义Style(以及检查这种Style)的方法,并顺便讲一下它的Elipse插件开发。CheckStyle当前最新的版本是4.3,本文中涉及的为4.2。

首先,CheckStyle的主要流程是:

1。对Java文件进行词法语法分析,生成语法树。

2。载入配置文件(checkstyle-metadata.xml以及自定义的配置文件),register check事件。

3。按照深度优先遍历对语法树进行解析,按照注册的事件,在到达某些节点 ( AST ) 时进行style检查(AST,A child-Sibling Tree,是语法树中的某个节点,其类型在TokenTypes类中定义。)

我们所说的自定义Style的检查,就是在第二步设定的。这里牵涉到一个叫com.puppycrawl.tools.checkstyle.api.Check 的类,我们通常需要重载其中的两个函数:public int[] getDefaultTokens()public void visitToken(DetailAST ast). 这两个函数的含义为,在遍历语法树的过程中,每当到达getDefaultTokens函数所返回的AST类型, 程序就进入visitToken进行具体的检查和分析,即,真正的分析检查过程是在visitToken中实现的。

比如代码:

public int[] getDefaultTokens() {
        
return new int[] { TokenTypes.METHOD_DEF };
    }

它的意思就是说,每当语法树遍历到达METHOD_DEF类型的AST,系统就进入visitToken函数进行分析。

 

现在已经有开发完成的基于CheckStyle的插件,并且可配置性等方面已经做得比较完善。然而有时,这一类插件常常限制了我们所需要的功能,并且,面面俱到的设计在针对项目使用时会降低不少效率。所以,复杂的未必最好,合适的才是最佳。我想这就是我为什么写这些东西的原因吧。

分享到:
评论

相关推荐

    eclipse代码规范样式配置文件Checkstyle

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

    checkstyle-8.34-all.jar

    使用checkstyle可以约束程序员的开发规范,但是基础的api有时不能满足公司的要求,这时需要下载这份jar文件,自定义checkstyle必备,来下载吧

    代码IDEA提交审查工具-alibaba规范检查

    Alibaba Java Coding Guidelines是一款为Java开发者提供的插件,旨在帮助开发者遵循阿里巴巴Java开发手册中的编程规范。...开发者可以根据实际情况自定义规范,并将其与团队成员共享,从而确保整个团队的代码风格

    spring-boot-java-swing-reservations:该项目旨在介绍如何连接Spring Boot 2和Java Swing GUI小部件工具箱。 所有应用程序依赖项均由Docker Compose提供。 还有一些静态代码分析工具,例如FindBugs和Checkstyle

    Spring BootSwing预订 该项目旨在介绍如何创建和配置Spring Boot + JPA / Hibernate Java Swing应用程序。 该项目使用Java,Spring Boot和... Checkstyle是一种开发工具,可帮助程序员编写符合编码标准的Java代码。Fin

    SonarLint-3.2.0.2350.zip

    Java 代码规范检查插件: ...7. 糟糕的设计 通过sonar可以找出循环,展示包与包、类与类之间相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规定。

    SonarLint-4.1.0.3312.zip

    7. 糟糕的设计 通过sonar可以找出循环,展示包与包、类与类之间相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测耦合。

    Sonar代码规范

    7. 糟糕的设计 通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测藕合。

    Sonarqube静态代码分析工具 5.2.0最新版 Part1

    Sonar简介 Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测... 可以检测自定义的架构规则 通过sonar可以管理第三方的jar包 可以利用LCOM4检测单个任务规则的应用情况 检测耦合

    Sonarqube静态代码分析工具 5.1.0最新版 Part2

    Sonar简介 Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测... 可以检测自定义的架构规则 通过sonar可以管理第三方的jar包 可以利用LCOM4检测单个任务规则的应用情况 检测耦合

    spring-web-rss-channels:使用Spring MVC和JSP构建的全栈RSS阅读器Web应用程序。 它使用诸如Spring,JPA,Bootstrap,Apache Tiles,JSP等库。还有一个称为Checkstyle的静态代码分析工具

    使用Bootstrap快速设计和自定义响应式移动优先站点。 适用于现代Java应用程序的免费开源模板框架。 基于Composite模式,它可以简化用户界面的开发。 jQuery是一个快速,小型且功能丰富JavaScript库。 它使诸如HTML...

    JBCS-开源

    JBCS是JBuilder的Checkstyle插件。 它支持Checkstyle 4.x(包括自定义检查和严重性级别),并且是使用JBuilder Opentool API用Java开发的。

    hashspace-bootstrap:Bootstrap 的哈希空间组件

    jshint 验证: 运行gulp checkstyle 要运行测试: 运行gulp test 在开发模式下使用项目: 运行gulp build来构建它运行gulp play来构建它并启动一个网络服务器,它在观看源文件并在 Chrome 中使用 运行gulp play tdd...

    mycheckstyle.xml

    sun公司的校验规则太严格,本xml是摘取的一部分,适合大多数校验,可以导入IDEA或者eclipse等开发工具,已经留做自用

    cas-server-4.0.1:基于 cas-server-4.0.1 for cim

    Central Authentication Service (CAS) 简介 基于cas-server - v4.0.1 构建 1.用户验证改为数据库验证方式 2.增加自定义返回信息 3.构建方式更改为采用Gradle构建 4.checkstyle取消常量参数检查

    Maven2 的新特性.7z

    试想对于产生的 Junit-Report、JavaDoc、CheckStyle、PMD 等报告,如果没有一个统一的入口,每次切换目录是多么令人厌烦的事情! Maven 无疑是相当成功的,这一点从越来越多的开源项目开始使用 Maven 就可以看出。...

    gradle-quality-plugin:Java和Groovy的Gradle质量插件

    插件为所有高质量的插件实现统一的控制台输出,从而极大地简化了开发人员的工作流程:仅控制台用于处理违规情况,并使其感觉与Java编译器错误相同。 例如,在IntelliJ Idea中,它看起来像: 特征: 默认为零配置:...

    Android插件

    帮助你在开发阶段方便的检测出内存泄露的问题,使用起来更简单方便。 可以参考以下文章: LeakCanary 中文使用说明 18.Android Postfix Completion 可根据后缀快速完成代码,这个属于拓展吧,系统已经有这些...

Global site tag (gtag.js) - Google Analytics