`
cantellow
  • 浏览: 847344 次
  • 性别: Icon_minigender_1
  • 来自: 草帽海贼团
社区版块
存档分类
最新评论

利用Eclipse插件提高代码质量

阅读更多

很少codereview,没有代码质量工具给予支持,同事之间的默认规则就是代码在此刻(对,是此刻)能够正确跑起来就算OK,如果你发现你正在经历上述情况,那么你应该好好考虑怎么提高代码的质量。

实际上在有些项目很少有人去关注这个,领导们也不会看你代码的风格,代码是否重复,依赖关系等等(这让我想起了《程序员之死》中提到的“某个架构很落后,技术很普通的产品却大卖”)。虽说领导强调把项目交给你,就要自己承担起责任。但是,试问如果碰到一大堆代码风格迥异,代码重复问题,你还会动手把它们整个重构一遍吗?可能别人会说,“这只是代码质量的问题,不是功能的问题,没什么,它不是能正确跑起来吗?其他都是小事”。事实上,是我也不会那么做,何况你还不能保证每行代码你都熟悉作者的意图,难免下手犹豫不决。所以,我想说的是,代码质量的提高,最好不要交给后来人,当一个项目刚刚完成,就务必要分配人员进行代码质量的管理。当然,更好的情况就是在编写代码时就注意,永远把问题解决在萌芽时期,就像TDD里说的一样,写一点测一点,那么我们也时刻要注意,写一点,就要进行一遍代码质量的管理。

       在网上看了一些文章之后,我所认为代码分析领域有“五大”:

1.       代码风格,就是编码风格标准,个人认为应该遵循sun提出的标准,避免个人风格的肆意发挥。

2.       代码重复,复制粘帖代码俗称“堆代码”,在重构领域,这也称为坏的味道。

3.       静态分析代码潜在BUG,使用一些工具来找出一些比较常见的错误类型如臭名昭著的null指针、忽略返回值、初始化之前读取字段、找出 hash equals 不匹配 、未使用的代码等等。

4.       代码覆盖率,在进行测试的时候,有一个参数我们必须要知道,那就是代码覆盖率,可能你的测试动作并没有覆盖所有的代码,这时候我们必须保持警惕。

5.       复杂度监控和依赖项分析,复杂度监控用来监控项目代码的数量,类的数量,包的数量等等各种参数,这有助于我们分析项目是否走进了复杂的死胡同。越是复杂的事情越要保持简单,简单既是美。依赖项分析能够帮助我们分析包之间的引用,如果依赖过多,应该保持警惕,记得设计模式几大原则之一的迪米特法则也也讲到了这一点,个人认为应该以其作为依赖项分析的目标。

 

下面看看对应的工具,这里说明一点,各种工具之间可能有交集,我只选取我感兴趣的部分:

代码风格

CheckStyle

http://eclipse-cs.sourceforge.net/update/

它的饼图看着不错

代码重复

PMD

http://pmd.sourceforge.net/eclipse/

PMD也有CheckStyle的功能

静态分析代码潜在BUG

FindBugs

http://findbugs.cs.umd.edu/eclipse

比较钟爱的一个插件,其总结的BUG模式也比较有趣

代码覆盖率

emma

http://update.eclemma.org/

Coverlipse也不错,能与junit很好的结合

复杂度监控和依赖项分析

metrics

http://metrics.sourceforge.net/update

Metrics都有这两种功能,但是 JDepend在包分析上更专业

 

上面说了使用工具进行代码质量的管理,代码管理也包括人工审查,不过这个要依靠个人的经验,凭借一双慧眼才行。另外,关于codereview,我在http://www.iteye.com/topic/767906上看到一篇最佳实践,这个比较严厉了,相信很多公司都不会这么干,不过可以学习借鉴:

1. 我们把 codereview 这个环节安排在开发单元测试完成后,提交给QA以前做这个工作。 
2.
必须硬性严格通过codereview,会让每个开发者打开自己的code,在多媒体会议室接受review 参与者还有他的leader和相关架构人员,
 
3. review result
会提交给dev,然后dev再修改,再review,直到满意通过。
 
4.
记住,一定要"硬性执行"codereview 许多程序员天生的坏习惯,坚持三次review以后,dev就会有责任感,抛弃自己的陋习,完全遵守代码规范了【以后codereview的工作也就越来越快,因为大家都遵守这个规范了】。
 
5. dev
根据review result 更新自己的代码后,必须完成单元测试,然后在接受codereview, codereview成功通过后,然后dev再申请 reviewer通知QA组开始测试。
 
6. QA
只接受codereviewer的测试申请【也就是说, QA接受不到 codereviewer的测试申请,是不会对相关项目做测试的,这就是硅谷硬性规范】
 
7.
按照这个程序,有时候你会接近 bug
 
8.
你甚至可以把codereview 的复查功能添加到每天编译日程中,不满足规范的,就会导致daily build不成功,就找相关的dev,让其硬性完成code的规定。
 

这个过程刚开始执行的时候,程序员会有抵制态度,但是一定要硬性执行,让高层参与,只要好硬性执行三次以后,以后会产生一个黄金项目。 

4
5
分享到:
评论
15 楼 cantellow 2011-05-31  
hxl1013 写道
对于一个开发新人来说,如果进行代码质量复查,LZ觉得有没有一些简单的规则可遵循

个人觉得,如果你用findbugs找出的问题你都理解并改正了,那么就可以组织一场codereview,把一些大牛请过来给新人指导指导,我觉得,关键还在于自身,多看一些凯源代码和一些书籍,来提高对代码的敏感度以及审美感,我自己目前也努力在作者方面的一些工作。
14 楼 hxl1013 2011-05-31  
对于一个开发新人来说,如果进行代码质量复查,LZ觉得有没有一些简单的规则可遵循
13 楼 huangheyuan1229 2011-01-28  
又学到了很多Eclipse的插件
12 楼 cantellow 2010-11-04  
黑暗浪子 写道
随便问一句,兄弟,你懂敏捷吗?

不懂,你用一句话概括
11 楼 黑暗浪子 2010-11-04  
随便问一句,兄弟,你懂敏捷吗?
10 楼 黑暗浪子 2010-11-04  
liangguanhui 写道
黑暗浪子 写道
liangguanhui 写道
黑暗浪子 写道
浪费时间~codereview这种事情,最好能自动化,让hudson这样的东东来解决。光靠人力,开发进度会严重滞后的。

codereview 可以拿hudson自动化?可不可以详细说说?

你所列出的checkstyle,findbug等插件,hudson都可以支持并结合ant,maven自动运行。

这种codereview比得上人工的code review?

质量比人工高,效率比人工高,时间比人工花的少。如果是老板,会怎么想?
9 楼 liangguanhui 2010-11-03  
黑暗浪子 写道
liangguanhui 写道
黑暗浪子 写道
浪费时间~codereview这种事情,最好能自动化,让hudson这样的东东来解决。光靠人力,开发进度会严重滞后的。

codereview 可以拿hudson自动化?可不可以详细说说?

你所列出的checkstyle,findbug等插件,hudson都可以支持并结合ant,maven自动运行。

这种codereview比得上人工的code review?
8 楼 cantellow 2010-11-03  
黑暗浪子 写道
cantellow 写道
黑暗浪子 写道
浪费时间~codereview这种事情,最好能自动化,让hudson这样的东东来解决。光靠人力,开发进度会严重滞后的。

hudson是不是只支持svn,像IBM的ClearCase它支持吗?

这年头有谁还用clearcase啊?时代在前进,现在都流行git了。svn都快被淘汰了。

别这么说嘛,现在还有好多公司都用CC呢。
7 楼 黑暗浪子 2010-11-03  
cantellow 写道
黑暗浪子 写道
浪费时间~codereview这种事情,最好能自动化,让hudson这样的东东来解决。光靠人力,开发进度会严重滞后的。

hudson是不是只支持svn,像IBM的ClearCase它支持吗?

这年头有谁还用clearcase啊?时代在前进,现在都流行git了。svn都快被淘汰了。
6 楼 黑暗浪子 2010-11-03  
liangguanhui 写道
黑暗浪子 写道
浪费时间~codereview这种事情,最好能自动化,让hudson这样的东东来解决。光靠人力,开发进度会严重滞后的。

codereview 可以拿hudson自动化?可不可以详细说说?

你所列出的checkstyle,findbug等插件,hudson都可以支持并结合ant,maven自动运行。
5 楼 cantellow 2010-11-03  
黑暗浪子 写道
浪费时间~codereview这种事情,最好能自动化,让hudson这样的东东来解决。光靠人力,开发进度会严重滞后的。

hudson是不是只支持svn,像IBM的ClearCase它支持吗?
4 楼 liangguanhui 2010-11-03  
黑暗浪子 写道
浪费时间~codereview这种事情,最好能自动化,让hudson这样的东东来解决。光靠人力,开发进度会严重滞后的。

codereview 可以拿hudson自动化?可不可以详细说说?
3 楼 黑暗浪子 2010-11-03  
浪费时间~codereview这种事情,最好能自动化,让hudson这样的东东来解决。光靠人力,开发进度会严重滞后的。
2 楼 cantellow 2010-11-02  
liangguanhui 写道
其实上面说的codereview,质量管理之类的,都必须建立在一个关键前提上:项目有这方面的“预算”,当然这里的预算除了人力,还应该有时间。

你需要说服你的老板觉得这样做是有收益,而不仅仅是成本的支出。否则一切皆是浮云……

嗯,你说的相当有理,写文章的时候这方面确实没怎么考虑。
看来一切都建立在利益上面。
真正把程序员当一回事的只有Google这种大牛了。
1 楼 liangguanhui 2010-11-02  
其实上面说的codereview,质量管理之类的,都必须建立在一个关键前提上:项目有这方面的“预算”,当然这里的预算除了人力,还应该有时间。

你需要说服你的老板觉得这样做是有收益,而不仅仅是成本的支出。否则一切皆是浮云……

相关推荐

    让开发自动化 用 Eclipse 插件提高代码质量

    通过合理选用和配置这些 Eclipse 插件,开发者可以大大提高代码质量,减少错误,同时提升开发效率。不仅如此,Eclipse 插件的灵活性使得开发者可以根据项目需求,自定义适合的开发环境,实现开发工作的自动化。因此...

    好.让开发自动化 用 Eclipse 插件提高代码质量1

    【描述】:本文探讨了如何利用Eclipse插件自动化代码质量检查,包括CheckStyle、PMD的CPD、Coverlipse、JDepend和Eclipse Metric插件,以提升开发效率和代码质量。 【标签】:eclipse 自动化 软件/插件 【正文】:...

    让开发自动化: 用 Eclipse 插件提高代码质量

    本文将深入探讨如何利用Eclipse插件来实现这一目标。Eclipse作为一个广泛使用的开源集成开发环境(IDE),提供了丰富的插件生态系统,可以帮助开发者进行代码分析、静态检查、重构以及持续集成等任务,从而提升代码...

    一些与代码质量有关的eclipse插件

    标题 "一些与代码质量有关的eclipse插件" 暗示了我们即将探讨的是如何利用Eclipse集成开发环境中的插件来提升代码的质量。Eclipse是一个强大的Java开发工具,而插件则能够扩展其功能,帮助开发者检测和修复代码中的...

    eclipse代码行数统计插件

    因此,Eclipse的代码行数统计插件只是开发辅助工具的一种,它与其他静态代码分析工具、代码格式化器和覆盖率测试工具一起,构成了提高代码质量和效率的完整生态系统。通过合理利用这些工具,开发者可以更有效地管理...

    Eclipse插件开发学习笔记全篇+源码.rar

    3. 网络和云服务:利用Eclipse插件实现与远程服务器的交互,如Git集成、RESTful API调用等。 4. 社区资源和最佳实践:熟悉Eclipse社区,了解最新的插件开发技术和社区最佳实践。 5. 持续集成和部署:设置CI/CD流程,...

    Eclipse插件开发(第3版 - 高清).pdf.zip

    《Eclipse插件开发(第3版 - 高清)》是...通过阅读《Eclipse插件开发(第3版 - 高清)》,开发者不仅可以掌握Eclipse插件开发的基本技能,还能了解到如何构建高效、可扩展的插件系统,从而提升软件开发的效率和质量。

    Eclipse插件开发方法与实战 2006 pdf 464页

    例如,利用Eclipse插件开发工具集(PDE)来创建插件项目,配置构建路径,以及如何处理依赖关系等。Eclipse PDE为开发者提供了一系列的开发工具和服务,帮助开发者更容易地进行插件开发。 实战部分可能包括对插件...

    代码覆盖率eclipse插件

    EClemma可以与其他Eclipse插件如PMD、FindBugs等配合使用,实现更全面的代码质量管理。例如,结合静态代码分析,可以同时关注代码的可读性、规范性和测试覆盖率。 7. **注意事项** 虽然高覆盖率并不意味着高质量...

    Eclipse实现代码折叠功能插件,基于com.cb.eclipse.folding-1.0.6.jar

    在实际开发中,配合Eclipse的其他优秀插件,如Code Recommenders(代码推荐)、Mylyn(任务跟踪)和SonarLint(代码质量检查),开发者可以构建一个强大的集成开发环境,为编写高质量、可维护的代码提供全方位的支持...

    eclipse插件IE插件

    总之,Eclipse插件和IE插件在Web开发中扮演着重要角色,通过安装和配置合适的插件,可以显著提升开发效率和代码质量。在Eclipse中寻找并安装预览JSP或HTML文件到IE浏览器的插件,可以使开发者在编写代码的同时实时...

    eclipse插件,打开java文件目录

    在实际开发中,理解并掌握如何利用Eclipse插件提升开发效率是至关重要的。除了EasyExplore,还有许多其他优秀的插件,如Mylyn用于任务管理,Subversive或Subclipse用于版本控制,PMD和Checkstyle用于代码质量检查等...

    Eclipse插件开发方法与实战_2006.pdf

    Eclipse插件可以利用这个核心运行时,通过标准的扩展点来实现功能的扩展。 Eclipse插件开发涉及的主要技术包括OSGi(Open Service Gateway Initiative)和JFace等。OSGi是一个Java的模块系统,它定义了如何在运行时...

    eclipse插件

    开发者可以通过Eclipse插件访问项目源码,进行版本控制操作,同时利用各种工具进行性能分析、代码质量检查等任务。 总结来说,Eclipse插件是Eclipse强大功能的关键组成部分,它们极大地扩展了IDE的能力,涵盖了从...

    使用 Eclipse 插件开发环境构建模板

    总的来说,使用Eclipse PDE的模板功能,开发者可以更高效地构建Eclipse插件,减少重复工作,同时提高代码质量。通过理解PDE的模板架构,开发者可以自定义模板,满足特定项目的需要,进一步提升开发体验和生产力。...

    基于Eclipse插件的简易代码生成工具 毕业设计 论文

    《基于Eclipse插件的简易代码生成工具》是一篇毕业设计论文,主要探讨了如何利用Eclipse平台开发一款能够自动生成代码的插件。...同时,这样的工具也有助于软件团队标准化代码,提高代码质量和可维护性。

    eclipse下的js插件

    5. **Eclipse Marketplace**:Eclipse有一个内置的Marketplace,其中包含了大量第三方JS插件,如JSHint插件用于代码质量检查,或ESLint插件用于遵循特定的编码规范。用户可以根据需求搜索并安装这些插件,进一步定制...

    emmet-eclipse插件

    熟悉这些规则后,开发者可以更流畅地编写代码,减少出错的可能性,提高代码质量。 总的来说,Emmet-eclipse插件是Eclipse平台上的一个强大工具,它通过Emmet的高效语法,让前端开发变得更加快捷、准确。对于任何在...

    jd-eclipse插件

    总结,jd-eclipse插件是Eclipse开发者的重要工具,它提供了便捷的反编译功能,使得无源码的Java类文件也能被理解和利用。正确安装和使用jd-eclipse,能够提升开发者的生产力,增强代码分析能力。

    eclipse Java代码折叠插件_ Code Folding

    "eclipse Java代码折叠插件"正是这样一个功能强大的工具,它借鉴了Visual Studio中的#region #endregion概念,使得开发者能够对Java源代码进行折叠和展开操作,从而更好地管理和理解代码。 代码折叠功能允许程序员...

Global site tag (gtag.js) - Google Analytics