`

Arc-05-22- Codepro 代码复审及自动化工具

 
阅读更多

无论如何,代码在最终封箱打包前,一定要复审一下下才放心。

自己复审自己的代码,基本上是个笑话;交给同事复审自己的代码,太多沟通代价;交给上司复审自己的代码,比高考还焦虑。

交给工具软件才是正途,CodePro Analytix 被 Google 收购后,就让生活变得美好许多了。

 

网上 K 的一段规则:

==============================================

注意:

在用CodePro检查代码前最好在代码中用ctrl+shift+f 让eclipse自动为代码格式化一遍。

(灰色部分为暂时不执行部分)

1. Append String:

1) String literal can be replaced by a character literal:单个字符用’ ’来取代使用” ”

错误:sb.append(“a”);

正确:sb.append(‘a’);

2.Badly Located Array Declarators:

1) Badly located array declarators: 

File filesNodeB[] = ServiceAccess.getSystemSupportService().getFiles(fileName) 

数组的声明符放在类型后面不要放在变量后面

正确:File[] filesNodeB = ServiceAccess.getSystemSupportService().getFiles(fileName) 

3. Boolean Method Naming Convention:

1) Invalid method name: "isWriteAccess" should not be prefixed with 'is':

自定义的非Boolean方法名,前缀建议不要命名为is开头,is开头的方法名是为Boolean方法保留的

错误:public int isWriteAccess(Object obj)

正确:public int writeAccess(Object obj)

4. Caught Exceptions:

1) Disallowed exception caught: Exception 

catch (Exception e) 这样的异常最好能定义成更加详细的异常

5. Constant Field Naming Convention:

1) Invalid constant name: "NeInfoAttrNames" contains lowercase letters

用finall修饰的是常量 名字要全大写

错误:private final static String[] NeInfoAttrNames

正确:private final static String[] NEINFOATTRNAMES

6. Constants in Comparison :

1) Constant on right side of comparison: 在比较的时候,不变的部分应放在比较的右边。

错误:if  (this.listeners  ==  null) 

正确:if  (null  ==  this.listeners)

7. Dangling Else:

1) Dangling else clause 不规范的else写法,if,else 中只有一条语句也要加{}.

错误:else

    return null;

正确:else {

       return null;

    }

8. Define Load Factor:

1) Define the load factor of Hashtable instances:hashtable支持线程同步相对来说比较耗系统资源 在定义的时候最好把它的大小和装载因子都定义出来;

例子:filterMap = new Hashtable(32, 0.75f);

9. Declared Exceptions:

1) Disallowed exception declared: Exception

   public void init() throws Exception这样的异常最好能定义成更加详细的异常

10. Define Initial Capacity:

1) Define the initial capacity of StringBuffer instances:

在定义ArrayList,HashMap, HashSet, Hashtable, Vector, WeakHashMap, 'StringBuffer的时候最好定义初始的容量。

错误:StringBuffer sb = new StringBuffer();

正确:StringBuffer sb = new StringBuffer(32);

11. Document Closing Braces:

1)  Undocumented closeing brace:在if ,else等语句结束后应该在”}”后面加 // end if

   正确:if (null == this.listeners) {

    return;

   } // end if

12. Empty Catch Clause:

1) Empty catch clause for exception 空的chatch语句

13. Exlicit“this” Usage:

1) The keyword “this” is unnecessary:  this 在语句中是多余的

14. Field Javadoc Conventions:

1) Missing Javadoc comment for field:缺少JAVA文档注释

15. Hiding Inherited Fields:

1) Field hides field inherited from RuntimeException:

    private static final long serialVersionUID = -2945178819756838045L; 直接删掉这句

16. Import Order:

1) Import out of order: 从未用到导入的类

17. Instance Field Naming Convention:

1)  Invalid field name: " _ _Table" starts with an underscore 错误的命名

   错误:private Hashtable _ _Table = new Hashtable(200);

   正确:private Hashtable _Table = new Hashtable(200);

18. Method Javadoc Conventions:

1)  Empty @return tag in getValues 在getValues方法的注释中@return标记的内容为空

2)  Missing Javadoc comment for method:缺少方法的注释

19. Missing Block:

1) Missing block in if clause:if 语句缺少 {}

错误:if(null == item)

   return 0;

正确:if(null == item){

   return 0;

  }

20. Modifier Order:

1) Incorrect modifier order: "static" should appear before "final": static应放在final的前面

错误:private final static String SViewName = "SnmpMocView";

正确:private static final String SViewName = "SnmpMocView";

21. Platform Specific Line Separator:

1) Use of a platform specific line separator:

并不是所有系统都支持“\n”使用System.getProperty("line.separator") 来取代它

22. Questionable Assignment:

1)  Questionable method parameter assignment : 可疑的参数分配

23. Statement Creation:

1) Invalid SQL statement creation:创建createStatement()应该用预编译语句

错误:stm = con.createStatement();

正确:stm = con.prepareStatement();

24. Synchronized Method:

1) Use of synchronized modifier: synchronized:修饰苻不要放在方法名前面 容易让人忽略修饰苻的存在,最好是放在要修饰的语句快中。

错误:public synchronized String getName() {

      ...

  }

25. Static Field Naming Convention:

1) Invalid field name: "segService" starts with lowercase letters。静态变量名第一个字母为大写

错误:private static SnmpExtGuiService segService;

正确:private static SnmpExtGuiService SegService;

26. Return Boolean Expression Value:

1) An if-statement always return true or false:

错误:if (index >= 0)

  {

   return true;

  } else

  {

   return false;

  }

正确:return index >= 0;

27. Questionable Name:

1)  Short name found: 命名太短

28. Type Javadoc Conventions:

1) Missing @version tag for type BaseSnmpSyntag:在注释中缺少@version 标记

2) Missing @author tag for type :在注释中缺少@author标记

29. Unnecessary Exceptions:

1)  Unnecessary declaration of Exception:不必要的异常

30. Unnecessary Import Declarations:

1)  unnecessary Import 多余的Import语句

31. Use equals() Rather Than ==:

1) Should not compare values using the equals (==) operator 

比较值的时候用“==”不是总是准确的(根据具体情况来执行equals()方法效率没==高)

错误:if(cls = = G828.class)

正确:if(cls.equals(G828.class))

32. Unnecessary Return Statement Parentheses:

1) Unnecessary parentheses around the expression in a return statement: 

在return语句中没有必要的”()”

错误:return (obj != null);

正确:return obj != null;

33. Variable Usage:

1)  Variable assigned to but not referenced:从没读取过的变量(建议小心删除)

34. Use Compound Assignment:

1)  Use compound assignment: 

错误:Pos = Pos + 1;

正确: Pos += 1;

这样写可以使代码简单化

分享到:
评论

相关推荐

    OSX-Arc-White-v1.3.7.tar.gz

    "OSX-Arc-White-v1.3.7.tar.gz" 是一个专为Gnome桌面环境设计的苹果风格主题的压缩包文件,旨在将苹果Mac OS X的美观界面风格引入Linux世界,尤其是那些喜欢苹果简洁、优雅设计的Gnome用户。 首先,我们要了解Gnome...

    dcm4chee-arc-5.22.1-mysql.zip

    **dcm4chee-arc-5.22.1-mysql.zip** 是一个与医疗影像管理和归档相关的软件包,它是 **dcm4che** 开源项目的一个组件。dcm4chee 设计用于满足 **IHE (Integrating the Healthcare Enterprise)** 的规范,这是一个...

    Arc-u-boot-1.1.3-20060612.tar.gz_ARC CPU_arc u-bo_arc600 verilog

    "Arc-u-boot-1.1.3-20060612.tar.gz" 是一个软件包的名称,其中包含了特定版本的U-BOOT(即1.1.3)针对ARC CPU的定制实现。"ARCU CPU"可能是"ARC User Bootloader"的缩写,是为ARC处理器设计的引导加载程序。"arc600...

    3D-arc-robot-vision.zip

    3D-arc-robot-vision.zip,麻省理工学院普林斯顿视觉工具箱,用于在2017亚马逊机器人挑战赛中进行机器人拾取和放置-机器人抓取和一次识别具有深度学习的新物体。,3D建模使用专门的软件来创建物理对象的数字模型。它是...

    Python库 | arc-py-0.5.tar.gz

    在实际使用arc-py库时,你需要先解压缩文件,然后通过Python的pip工具安装,或者直接在项目的环境中添加库的源代码路径。安装完成后,就可以在你的Python代码中通过`import arc_py`来使用它提供的功能。 为了深入...

    arc_conv-master_sourcecode_PURE_game_arc_conv.exe_arc_conv_

    这种命令行界面使得arc_conv能够轻松集成到自动化工作流中,方便批量处理任务。 arc_conv的压缩包文件名称列表中仅包含"arc_conv-master"这一项,这可能意味着这是项目的主分支或者是最主要的版本。在开源项目中,...

    fanuc弧焊机器人arc-mate说明书

    - **Arc-Mate 100iC 系列提供了极大的工作范围**,适用于大型零件或复杂的工具。 - **极快的手腕轴速度**:减少了空切时间,从而提高了生产率。 #### 尺寸和规格 Arc-Mate 100iC 系列具有以下主要规格: - **工作...

    arc-flatabulous-theme, 带有Flatabulous窗口控件的arc 主题.zip

    arc-flatabulous-theme, 带有Flatabulous窗口控件的arc 主题 arc-flatabulous主题arc Flatabulous主题是带有 Flatabulous 窗口控件的 arc 主题。 arc-flatabulous可以用于三种变体 arc-flatabulous Arc-Flatabul

    Arc-length.rar_ARC length_MATLAB 弧长法_arc-length_buckling_结构稳定

    "弧长法"(Arc-length method)是一种常用的数值方法,用于解决非线性问题,特别是涉及结构稳定性的计算。在MATLAB环境中,可以利用编程来实现这一方法。本压缩包中的"Arc-length.rar"包含了两个关键的MATLAB脚本...

    ICOM ARC-20

    总之,ICOM ARC-20作为一款专业的电台控制软件,为用户提供了强大的功能和高度的自定义性,是业余无线电爱好者提升操作体验和提升技能的有效工具。通过不断学习和实践,用户可以充分利用这款软件的功能,更好地享受...

    Arc-1.37.0-48361

    Arc-1.37.0-48361

    dcm4chee-arc.xml

    此外,dcm4chee-arc-logstash.xml文件可能用于日志收集和分析,这是系统监控和故障排查的重要部分。Logstash是一个强大的日志管理和分析工具,它可以将dcm4chee的运行日志收集并转发到中央的日志存储,以便进行实时...

    Atom-atom-arc-dark-ui,arc dark是一个atom ui主题。为Lioneil/Atom做出贡献.zip

    "Atom-atom-arc-dark-ui,arc dark"是针对Atom编辑器的一个UI(用户界面)主题,设计风格为深色系,旨在提供舒适且对眼睛友好的编码环境。这个主题由Lioneil为Atom社区贡献,增加了编辑器的美观性和个性化选择。 在...

    NX二次开发UF-CURVE-LINE-ARC-is-arc-equal 函数介绍

    NX二次开发UF_CURVE_LINE_ARC__is_arc_equal 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域...

    PyPI 官网下载 | ARC-Alkali-Rydberg-Calculator-2.1.2.tar.gz

    《PyPI官网下载 | ARC-Alkali-Rydberg-Calculator-2.1.2.tar.gz》 本资源是PyPI(Python Package Index)官方提供的一个软件包,名为"ARC-Alkali-Rydberg-Calculator",版本号为2.1.2,其以.tar.gz的压缩格式提供。...

    arc_length.rar_ARC length_NJ2F_arc-length_arc_length_shakebt2

    在IT领域,"arc_length.rar_ARC length_NJ2F_arc-length_arc_length_shakebt2"这个标题可能指的是一个关于弧长参数化方法的压缩文件,其中包含了与弧长编码(Arc-length coding)相关的资料。描述中的"Arc-length ...

    arc-theme, 具有透明元素的平面主题.zip

    arc-theme, 具有透明元素的平面主题 arc-主题微软的arc 3和 GNOME 2的透明元素,支持 GTK 3和 GNOME shell,支持基于GTK的桌面环境,如 GNOME,Unity,Budgie,万神庙,Xfce,MATE等等。 arc-可用三种变体 arc

    arc-rimi.rar_linux arc

    标题中的“arc-rimi.rar_linux arc”表明这是一个与Linux操作系统下的ARCnet网络驱动程序相关的压缩文件,特别是针对“RIM I”(完全内存映射)卡片的驱动。ARCnet是一种古老的局域网(LAN)技术,最初在1980年代...

    PyPI 官网下载 | bio-arc-0.1.0.tar.gz

    标题中的"PyPI 官网下载 | bio-arc-0.1.0.tar.gz"表明这是一个在Python Package Index(PyPI)上发布的软件包,名为`bio-arc`,版本为0.1.0,其分发形式是tar.gz压缩文件。PyPI是Python开发者发布自己软件包的官方...

    arc-engine9.3最完整许可文件License

    arc-engine9.3最完整许可文件License,其中包括了最完整控件(map,sence等)的许可,没有时间限制,完全破解,是AE开发者必备文件!

Global site tag (gtag.js) - Google Analytics