辅助工具

出自Ubuntu中文

目录

[编辑] CVS工具

[编辑] 代码质量工具

[编辑] lint工具检查C语言代码缺陷

待补充

[编辑] 使用source Monitor分析工程中的代码质量

软件代码的质量,是有很严格的界定标准,比如软件开发中常常有诸如“设计高扇入、合理扇出(小于7 )的函数”等等规则。但现实中常常看到,一个产品功能被实现了,但其实现代码却很复杂,或者太复杂难以维护,这就不是好代码,这样的代码就需要在合适的时候重构,即重写。Source Monitor是一个免费软件(网址: http://www.campwoodsw.com/sourcemonitor.html ),针对的软件语言包括C/C++/C#/JAVA/VB.NET/Delphi/HTML/Visual Basic,这是一个很容易上手的软件,可以检查一个代码工程中那些代码属于比较差的代码,这就提醒工程师需要安排一个合适的时间,对这些低质量的代码做一个重写。

这里我们需要举个例子,以开源的实时操作系统ecos为例,ecos是一个较著名的开源LGPL授权的嵌入式操作系统,其3.0版本中的所有代码,包括针对不同硬件平台板子的支持包代码,总计有139万行,代码量较大。

Source Monitor的使用比较简单,首先导入代码,这个步骤很简单:


导入代码后,软件开始分析代码的质量,稍后得到一个统计情况,如下所示:

我们可以看到source monitor会分析的内容包括:

  • Lines:本文件中的代码行数
  • Statements:本文件中的完整语句数目,包括:以分号结尾的语句,if, for, while,try,catch,#include,#define,#undef分支等
  • %Branch: 顺序执行代码段的打断的分支,包括 if, else, for, while, goto, break, continue, switch, case, default, 和 return语句
  • %Comments:注释行数的百分比
  • Classes:文件中的class个数
  • Methods/Class:本文件中的所有的class统计出的平均每个class的method数目
  • Functions:本文件中的函数个数
  • Average Statements per Method:平均每个method的语句数
  • Maximum Complexity:最大复杂度
  • Maximum Depth: 最大深度
  • Average Depth:平均深度
  • Average Complexity:平均复杂度

一般软件经理会比较关心代码的复杂度和深度,我们看看有关复杂度的统计,复杂度最高的代码是tcp_input.c,其最大复杂度达到了291:

我们从菜单栏的“View”->“View Source File”我们查看tcp_input()这个函数。

类似地,我们看看函数深度的统计:

这段代码看起来的确太复杂了,goto满天飞,注释中竟然还有诸如“This is ugly, but ....”这样让人无语的字段,看来写代码的这位仁兄自己也很头大,我们在享受开源代码的时候,也必须免得这样的事实:开源代码中bug还是比较多的(当然,这里只是那ecos来举例,总体ecos还是相当成功的)。 代码质量是软件的基本,为了保证代码质量我们使用一些工具,比如pclint等等方式。本文通过Source Monitor这样的一个工具,希望能够给大家在代码开发中,对于提高代码质量方面有所帮助。