• 静态代码检查报告


    今天在下面刊载一篇小王同学写的静态代码检查报告,图文并茂,条理清晰。

    1. 工具说明

      FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。不是通过分析类文件的形式或结构来确定程序的意图,而是通常使用 Visitor 模式。Findbugs可以在多个环境中运行,同时也可以编写自己的检测器,功能比较完善。我们平时可以收集自己的或者是别人的开发经验,把它做成检测器来完善Findbugs的检测体系。在网上的评价中,FindBugs工具虽然是机器扫描,效率高,但是还不够灵活。

      FindBugs的官网为:http://findbugs.sourceforge.net/

      下载地址为:http://findbugs.sourceforge.net/downloads.html

      工具可以通过命令行方式和Eclipse插件的方式两种方式来使用,由于是开源软件,网站上同时附带了源代码包的下载。

      Eclipse插件的下载地址为:

      https://ncu.dl.sourceforge.net/project/findbugs/findbugs%20eclipse%20plugin/3.0.1/edu.umd.cs.findbugs.plugin.eclipse_3.0.1.20150306-5afe4d1.zip

    2.使用过程

      首先把下载到的FindBugs对Eclipse插件解压到Eclipse安装目录下的Plugin目录,启动Eclipse,在之前加载好的工程上右键找到Find Bugs菜单,点击Find Bugs,开始执行静态代码审查。

      在Window菜单上选择Show View中的Other,搜索FindBugs,选择Bug Explorer,点击OK,如下图所示。

      在下方的Bug Explorer中可以查看到工具找到了一个BUG,查看其详情。

      将BUG导出为HTML文件,得到BUG信息如下图。

    3.缺陷统计

      发现Bug:共1个

    Bug编号

    B-01

    Bug内容

    Store of non serializable com.neuedu.model.UserAccount into HttpSession in com.neuedu.controller.UserAccountController.doLogin(String, String, HttpSession)

    Bug提示

    This code seems to be storing a non-serializable object into an HttpSession.

    If this session is passivated or migrated, an error will result.

    Bug等级

    Troubling

    可信度

    High

    模式

    J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_SESSION

    类别

    BAD_PRACTICE (Bad practice)

    Bug位置

    UserAccountController.java: com.neuedu.controller.UserAccountController. doLogin

    4. 与同行评审对比

      同行评审对程序的整体质量,可维护性、可扩展性、易用性和清晰性都进行评审,在评审过程过程中我们按照规范的步骤对软件需求、设计、代码和相关技术文档进行仔细检查,找到了6个缺陷和其他代码规范问题。

      而静态代码检查是由程序按照固定的库规则进行筛选核查,只会针对代码的浅层逻辑进行进行审查,虽然自动化体现了机器测试的优点,但代码可流畅运行但与需求不符合之类的缺陷并不能查验。这是静态代码检查的不足之处,实际应用中应当做到两者结合,使用静态代码检查发现简单的逻辑错误,再由同行评审进行人工测试。

    5. 缺陷重点分析

      静态代码检查发现了一个bug在UserAccountController.java文件中,该类为用户账户的控制器类com.neuedu.controller.UserAccountController,出错发生在doLogin方法中的语句session.setAttribute("loginUser", userAccount);,在设置session的时候将不可序列化的账户类设置到session中,这可能在运行中使得会话不能正常保存。

      修复方法:将用户账户信息类实现序列化接口并提供序列化方法,并重新测试session保存会话功能。

    6. 静态代码检查工具优缺点

      代码检查工具的优点:自动化,使用机器扫描,效率较高,速度快,本次使用过程在1分钟之内完成,可以快捷地代替人力寻找bugs。

      代码检查工具的缺点:不够灵活,只能在检查工具有的bug库里面找到简单的错误。对于逻辑性较强的bug和结果与期望值不符的问题检测率较低。

  • 相关阅读:
    进程和线程
    vue程序搭建
    EXTJS 不显示窗体 标题框的办法
    asp.net 本地资源连接没反映的解决办法
    IIS支持flv格式流传送的办法(解决flash播放器报200错误)
    response.write不要放到try里去,不然会报一个错误 a instance object什么的
    Webservice 用http get方式无法请求到的解决办法
    转一篇关于RIA的内存泄露的文章
    jquery的选择器$('')在IE6下对JS动态生成(比如ajax生成的)的元素失效的解决办法
    聚类存储过程分析
  • 原文地址:https://www.cnblogs.com/hust-no-bug/p/8052112.html
Copyright © 2020-2023  润新知