Sunday, August 26, 2007

代码分析和漏洞检测

  在InfoQ上看到了一些关于代码分析的文章,发现了两篇比较有意思而且有完整中文译文的,分别是:
  • 代码规范的自动化监管
      讲的很不错,印象最深刻的一点是,面对参差不齐的代码质量和编程习惯所带来的巨大挑战,传统的通过事后代码复查来试图纠正已经太晚了,而且会不可避免地导致编码人员的不良心理反应。因此,可能最好的办法就是实施自动化监管,把静态源代码分析和漏洞检测系统与版本构件系统进行整合,从而进行强代码制规范化,既一定程度上避免了垃圾代码进入产品构件系统,也使得编码人员更易于接受并积极改进。
  • Google单实例模式检测工具
      这个检测是在字节码层面上的,而不是通常的源代码层面。因此,从难度上来说要高不少,而且很难检测完全。相当于要从一堆字节码中检测出某些模式或者特征代码,有点像查病毒软件的原理吧。
      至于单例(Singleton)模式的问题与否,我个人认为,如果采用的是松耦合的资源注入方式,那么使用单例并不是问题非常大的;反之,如果控制逻辑和资源状态是混在一起的,相当于一种全局的static容器,那么这无疑增加了测试和理解的复杂性,理论上是不赞成的。大家觉得呢?
  最后,我也来介绍一个SAP的代码分析工具——JLin ,这个是可以通过简单地配置和构件系统整合在一起,然后生成代码质量报告。其本身是SAP NetWeaver Developer Studio的一个Eclipse插件,内置了一些基本的代码检测规则。在我们的日常开发中,任何Priority 1或者2的代码是不允许被带到产品的consolidate track上去的。虽然检测的范围还是比较有限,但还是在一定程度上起到了监管代码质量的作用。不过,就我的判断,在理论上,JLin的架构是能够支持更为复杂的源代码级或者字节码级的自动化代码审查和强制监管功能的。

by William Cui 崔伟毅

Labels: , ,