静态代码检查报告

静态代码检查报告今天在下面刊载一篇小王同学写的静态代码检查报告 图文并茂 条理清晰 1 工具说明 FindBugs 是一个静态分析工具 它检查类或者 JAR 文件 将字节码与一组缺陷模式进行对比以发现可能的问题 有了静态分析工具 就可以在不实际运行程序的情况对软件进行分析 不是通过分析类文件的形式或结构来确定程序的意图 而是通常使用 Visitor 模式 Findbugs 可以

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

 

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.-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和结果与期望值不符的问题检测率较低。

 

转载于:https://www.cnblogs.com/hust-no-bug/p/8052112.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231857.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java后端知识概述

    java后端知识概述1,java基础知识包括基本语法,集合类框架,以及java语言的特性,jvm等基本知识点,还有一些高级特性,比如反射,注解等等。2,设计模式设计模式是为了可重用代码,让代码更容易被他人理解、保证代码的可靠性的。通常来说,设计模式在系统开发中都是必不可少的。因为这样会简化,降低系统实现过程中要解决的问题。设计模式是软件工程的基石脉络,而模式是在某一背景下某个问题的一种解决方案。常见的设计模式有工厂模式,单例模式,mvc模式等等。而在开发中,所用到的设计模式,往往会根据实际背景去选择某一设计模式。

    2022年7月7日
    46
  • mysql修改表名

    mysql修改表名ALTER TABLE table_nameRENAMETOnew_table_name

    2022年6月1日
    35
  • mybatis逆向工程是什么意思_长话短说的方法

    mybatis逆向工程是什么意思_长话短说的方法目录Mybatis逆向工程一、通过Eclipse插件完成Mybatis逆向工程1.在线安装Eclipse插件2.新建一个JavaProject项目3.编写配置文件4.使用插件运行二、通过Java代码完成Mybatis逆向工程1.新建一个JavaProject项目2.编写配置文件3.编写生成代码程序三、通过Maven完成Mybatis逆向工程1…

    2022年8月21日
    5
  • Operators in MXNet-BatchNorm

    Operators in MXNet-BatchNormOperatorsinMXNet-BatchNorm

    2022年5月8日
    41
  • ❤ 挑战C站最强C++ STL标准库总结(内含大量示例)

    ❤ 挑战C站最强C++ STL标准库总结(内含大量示例)前言最近博主为了准备七月份的百度之星的算法比赛,把C++STL的相关语法又重新学习了一遍,然后整理成此文,本文内含string、vector、deque、stack、queue、list、set、map共9种容器的概念及常用操作语法,以及对STL的遍历、查找、排序、替换、算术生成等常用算法的用法和示例,供读者阅读收藏,学习参考。给大家推荐博主本人学习过的一个c++STL质量极高的课程链接:C++进阶之STL,很适合0基础想快速入门C++STL的朋友,关于想进阶的朋友,可以去看候捷老师的C++S

    2022年7月18日
    14
  • 解开Android应用程序组件Activity的”singleTask”之谜

    解开Android应用程序组件Activity的”singleTask”之谜在Android应用程序中,可以配置Activity以四种方式来启动,其中最令人迷惑的就是”singleTask”这种方式了,官方文档称以这种方式启动的Activity总是属于一个任务的根Activity。果真如此吗?本文将为你解开Activity的”singleTask”之谜。     在解开这个谜之前,我们先来简单了解一下在Android应用程序中,任务(Task)是个什么样的概念。我们

    2022年6月26日
    23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号