代码编写格式审查checkstyle

 一个规范的公司在开发编写程序要求是什么,大家应该都知道,是编写规范要求,为什么要这么强制性要求编写规范,学开发的同学都有体会,代码最难的就是看别人的代码,很多人宁愿重新给你写一个,也不愿意从头到位看一个复杂的程序。一个好的程序员没有一个良好的编写习惯,不止别人看不懂,时间久了连自己都会忘记。再者,公司程序员也不稳定,程序员一离职,那新员工来了怎么能接着做事,这样一来公司损失就大了。

      有个良好且规范的编码格式对公司是至关重要的,让新员工更快的看到产品代码,更快的投入到实际工作当中。

      既然这样,我们要求程序员代码编写规范,可还得去检测程序员是否遵守,怎么检查,一般公司是不是人工检查,有开发组长、经理等领导查看,要是多个程序员呢,要一个个查,一个个看他们的代码,这明显不是一个最佳的做法。这里就可以使用到自动化的方式去做,给大家介绍一款工具----checkstyle。我们就来学习学习,他究竟是何方神圣。checkstyle可以根据规范要求,编写出相对应的程序,自动去检测程序员编写的代码。

     Checkstyle是一款检查java程序代码样式的工具,可以有效的帮助我们检视代码以便更好的遵循代码编写标准,特别适用于小组开发时彼此间的样式规范和统一。具体这个工具的介绍我就不详细介绍了,网上有关资料也不多,到它官网去学习它的知识,国外的。官网发布肯定都是权威的,其他的都是在官网基础上进行翻译、详解、和改进。

   checkstyle的官网是:http://checkstyle.sourceforge.net/

   checkstyle学习也很简单,只要清楚它的api,对应就可以去应用,可以参照谷歌公司的模板(谷歌的规范太多太全,这导致都买用谷歌的模板去检测程序员的代码,几乎都会报错,这是因为它要求的范围太广,大公司就是大公司,我们按照自己的公司去做即可)


   第一步肯定要安装和配置(学习IT都是这样):

   在编译工具安装checkstyle插件,我用的是eclipse,官网下载这个插件,就不细细解释了,很简单的,根据步骤去做就行,百度可以搜索到;

   配置的详解:https://blog.csdn.net/jackyren007/article/details/4789917


   第二步:安装完后肯定要做事情的,写代码:

   这个我们用到文本进行编码即可,不用编译工具,编写完以后,把文本格式.txt改成.xml即可。

  模板:https://blog.csdn.net/sxdtzhaoxinguo/article/details/43449899


   第三步:写好后肯定应用啊:

   你就可以把checkstyle.xml文件添加进去,如何添加,这个也简单,我也不详细介绍了。

   你要是用谷歌写好的模板,百分百程序员写的代码不符合要求,谷歌这个太严格了。

   使用详细手册:https://blog.csdn.net/lifuxiangcaohui/article/details/7858969

   

    API:checkstyle的基本API,已有人翻译出来了:http://zhangzuanqian.iteye.com/blog/987121

    

    我个人提供下checkstyle的编写小技巧:首先在文本里(最好是.XML格式),先把公司规定的要求以注释的方式列出来,在一一对应,用填鸭式的方法去写,根据API或者网上其他人写好的,举一反三,写出来是没有问题的。


例如:

 mycheck.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC  
    "-//Puppy Crawl//DTD Check Configuration 1.2//EN"  
    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">  


<module name="Checker">   
  
   <!-- checkstyle文档根据公司《编码规范Java及Android.docx》中的原文进行编写,文中注释中内容说明:
   @开头:原文;$开头:由原文翻译为编码格式;#开头和结尾:不能使用代码检查,只能人工检查;&开头:eclipse检查出现的提示语;
   -->
   <module name="TreeWalker">  
      
<!-- #第1章 编码基本原则# -->
   <!-- 
       #代码的可读性为衡量代码质量的第一要素#
        #代码的可读性体现在:一致的命名约定、一致的代码布局、一致的设计规范
        一致性体现为:
        #新增或修改代码与原有代码风格保持一致(优先级最高)#
        #所有新增代码风格保持一致(优先级第二)#
        #不同软件平台风格保持一致(优先级第三)#
-->  
	   
		
<!-- 第2章 通用布局格式 -->
  <!-- 2.1 函数规模 -->
    <!-- @一个函数应限制为50行120列,若超出此标准须说明 --> 
<module name="FunctionLength">  
  <property name="max" value="50" />
  <message key="indentation.child.error" value="若超出必须说明"/> 
</module>
<module name="FunctionLength">   
  <property name="max" value="120" /> 
  <message key="indentation.child.error" value="若超出必须说明"/> 				
</module> 

<!-- 2.2 缩进对齐 -->
  <!-- @每一个逻辑层次都要求代码布局缩进一层,缩进量按具体规范正文要求 -->
<module name="Indentation">  
  <property name="severity" value="error"/>  
  <property name="basicOffset" value="4"/>  
  <message key="indentation.error" value="你缩进了{1}个空格,正确应该缩进 {2}个空格,违反编码规范3.2章节"/>  
  <!-- $子级缩进 -->  
   <message key="indentation.child.error" value="你缩进了{1}个空格,正确应该缩进 {2}个空格,违反编码规范3.2章节"/>  
</module>  
		  
<!-- @罗列赋值要求等号对齐 -->
  <!-- 2.3 空格 -->
    <!-- @逗号只在后面加空格,例如:int a, b, c; -->
<module name="WhitespaceAfter">
  <property name="tokens" value="COMMA"/>
</module>

先把格式要求列出来,在写的话相对简单,当然你还有其他方法的话,欢迎可以在评论区留言交流。

-----checkstyle网上相关资料不是很多也不是很全,只能摸索,不知道现在有几家公司还用这种方法;

---------------------------------完,不明白的给我留言·······················

猜你喜欢

转载自blog.csdn.net/bbs11007/article/details/80389558