前言
使用自动化工具和人工审查并行方式检查程序源代码是否存在安全隐患,或者有编码不规范的地方。利用自动化代码审计工具,如CheckStyle、FindBugs、PMD、JTest 进行代码审计,以及每周定期组织对最近开发的业务进行代码评审。
本文主要使用FindBugs工具。
服务内容
针对Eclipse IDE中书写的Java代码进行分析。
其中包含正在开发中的代码和已经开发完毕的代码进行审查。在完成测试上线前重新检查一遍代码,防止出现重大错误漏洞,影响程序的运行和安全。
审查工具
FindBugs:是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。
FindBugs不能发现非java的Bug。对于非java撰写的代码,如javascript,SQL等等,要找出其中可能的bug,FindBugs是无能为力的。当然,javascript中的bug似乎还不至于使系统崩溃,而SQL中的bug往往又跟业务逻辑相关,只要测试仔细一些应该是可以发现的。
具体的审查工具安装方法在CodeReview.docx文档的有描述。
审查流程
每周定期组织对最近开发的业务进行代码评审,主要针对本周完成的上传SVN的代码进行分析,通过开发人员手动查看和FindBugs自动查询错误。
对于程序员和后期维护主要分为两个阶段,“开发阶段”主要是开发人员自己去完成对代码的校验和完善,“维护阶段”一般在上线完成,对没能发现的bug再处理问题。
开发阶段
一、程序员个人在书写代码的过程中或者写好代码后,通过FindBugs工具查找到一遍,排除基本的代码逻辑问题。
二、代码测试前查找一遍基本的错误。代码测试后,修改业务逻辑等代码后再次查找一遍排除基本问题。
三、整个模块完成后FindBugs对该模块涉及的java文件进行一次扫描,以发现一些不易察觉的bug或是效能问题。
四、交付新版的时候,开发团队可以跑一下FindBugs,除掉一些隐藏的Bug。
五、SVN提交代码后,项目经理通过分配任务,将所有的代码,互相转交给别人进行代码审阅,提出代码中的疑问,一起提高代码质量。
六、记录相关可能后期会引发其他错误的FindBugs日志,应对以后更方便的查找错误,完善对代码的理解和使用。
维护阶段
这里指的是系统已经上线,却发现因为代码中的某一个bug导致系统崩溃。在除掉这个已暴露的bug之后,为了快速的找出类似的但还未暴露的 bug,可以使用FindBugs对该版的代码进行扫描。
结束语
FindBugs不过是一个工具。作为开发人员,当然首先要在编程的时候努力避免引入bug,而不要依赖于某个工具来为自己把关。不过由于代码的复杂性,一些隐藏的bug确实很难靠咱们的肉眼发现。这时,应用一些好的工具或许就可以帮你发现这样的bug。这便是FingBug存在的价值。
不仅仅使用FindBugs,例如PMD审查工具可以同时使用,增加对代码的复查,坚固代码。