静态代码检查报告

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

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

时间: 2024-10-11 16:39:15

静态代码检查报告的相关文章

ant + findbugs 安装及实现静态代码检查,并生成HTML检查报告

1.ant + findbugs安装 通过Eclipse或者MyEclipse继承ant.findbugs插件.插件可以到网上去下. 注:findbugs最好是下载1.3.9版本,如果是其他版本,可能在运行的时候会提示版本冲突错误! 2.通过findbugs做静态代码检查,此处可以说有两种方式. A.直接生成HTML报告形式,在项目根目录下新建文件build.xml,将如下代码复制进去 <project name="DHOME_ANDRIOD_CodeCheck" default

Android静态代码检查-Lint

参考文章: Improving Your Code with lint lint 使用 lint 增强你的代码 Android Lint简介 gradle lint gradle中有lint任务,可以直接执行lint静态代码检查,但是前提是你的build.gradle设置了lintOptions选项: android { compileSdkVersion 23 buildToolsVersion "21.1.2" lintOptions { abortOnError false }

静态代码检查工具 cppcheck 的使用(可分别集成到VS和QT Creator里)

CppCheck是一个C/C++代码缺陷静态检查工具.不同于C/C++编译器及其它分析工具,CppCheck只检查编译器检查不出来的bug,不检查语法错误.所谓静态代码检查就是使用一个工具检查我们写的代码是否安全和健壮,是否有隐藏的问题. 比如无意间写了这样的代码: [cpp] view plain copy int n = 10; char* buffer = new char[n]; buffer[n] = 0; 这完全是符合语法规范的,但是静态代码检查工具会提示此处会溢出.也就是说,它是一

Nodejs + Jshint自动化静态代码检查

1.   目的 提交代码前能够自动化静态代码检查,提高代码质量 2.   准备 1.    Nodejs安装: 官方地址:http://nodejs.org/ 安装说明:根据电脑配置下载对应的版本进行安装 检查安装是否成功: 2.    安装Grunt: GruntJs官方网址:http://www.gruntjs.org/ 安装说明: 1.进入命令行,安装grunt库 2.安装grunt-cli(安装后可以在命令行直接运行grunt命令) 3.检查是否安装成功: 3.    安装jshint

FindBugs —— Java 静态代码检查

在使用 Jenkins 构建 Java Web 项目时候,有一项叫做静态代码检查,是用内置的 findBugs 插件,对程序源代码进行检查,以分析程序行为的技术,应用于程序的正确性检查. 安全缺陷检测.程序优化等,特点就是不执行程序.它有助于在项目早期发现以下问题:变量声明了但未使用.变量类型不匹配.变量在使用前未定义.不可达代码.死循环.数组越界.内存泄漏等.分为以下几种类型: 一.Bad Practice (糟糕的写法) 二.Correctness (不太的当) 三.Experimental

静态代码检查工具 cppcheck 的使用

CppCheck是一个C/C++代码缺陷静态检查工具.不同于C/C++编译器及其它分析工具,CppCheck只检查编译器检查不出来的bug,不检查语法错误.所谓静态代码检查就是使用一个工具检查我们写的代码是否安全和健壮,是否有隐藏的问题. 比如无意间写了这样的代码: [cpp] view plaincopy int n = 10; char* buffer = new char[n]; buffer[n] = 0; 这完全是符合语法规范的,但是静态代码检查工具会提示此处会溢出.也就是说,它是一个

静态代码检查工具-PMD初学者入门篇

前言: PMD是一款静态代码分析工具,它能够自动检测各种潜在缺陷以及不安全或未优化的代码. PMD更多地是集中在预先检测缺陷上,它提供了高度可配置的丰富规则集,用户可以方便配置对待特定项目使用那些规则. 安装及使用: 1.在Eclipse中 安装 PMD插件运行方式 ECLIPSE菜单 > HELP > Install New Software > 弹出窗口中在 work with中输入 PMD - http://sourceforge.net/projects/pmd/files/pm

Docker+Jenkins持续集成环境(3)集成PMD、FindBugs、Checkstyle静态代码检查工具并邮件发送检查结果

为了规范代码,我们一般会集成静态代码检测工具,比如PMD.FindBugs.Checkstyle,那么Jenkins如何集成这些检查工具,并把检查结果放到构建邮件里呢? 今天做了调研和实现,过程如下 首先看,最终效果: 1.pom.xml build.plugins 增加: <plugin> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <ph

华为软件开发云测评报告二:代码检查

相关文章:<华为软件开发云测评报告一:项目管理> 体验环境 体验方式:PC端 系统:Windows 64位 浏览器类型:Chrome浏览器 浏览器版本:58.0.3029.110 体验时间:2017.06.25 分析目的 了解华为软件开发云的代码检查服务功能,分析其优缺点: 从人工代码检视到自动化代码检查,华为软件开发云如何保证代码质量: 代码检查未来的发展趋势: 产品简介 产品名称:华为软件开发云 定位:软件开发云(DevCloud)是集华为研发实践.前沿研发理念.先进研发工具为一体的研发云