白盒测试之静态检查

2023-11-03

态检查一般是检查编码标准规范,错误列表。编码规范往往团队
会根据自己的经验和风格进行设置一些规范。现在很多IDE工具都会
在编辑代码的时候实时的提醒是否符合代码风格。错误列表,一般
是代码潜在的bug,由于某种代码写法虽然没有语法错误,但是可能
存在错误,比如会导致线程死锁。这些都是错误列表应该检查的。
静态检查的可操作方式
1、代码走查
程序员之间可以隔一定的时间抽取代码进行走查。
走查的时候根据汇总报告,把这些经验汇成列表,作为下次代码走查的依据。
该方式的特点是,手工、多人讨论、操作简单,但是效率会比较低。
2、代码扫描
使用软件对我们的代码进行扫描,查找出潜在的问题。现在有许多商业的
工具能够进行扫描,比如Parasoft JTest、Rational® Software Analyzer、
pclint等工具,往往不同的工具会针对不同的语言。当然也有很多开源的工
具。在这里java方面主要推荐Findbugs。Findbugs可以在ANT/GUI/ECLIPSE三个
环境中运行,同时也可以编写自己的检测器,功能比较完善。我们平时可以收
集自己的或者是别人的开发经验,把它做成检测器来完善Findbugs的检测体系。
软件扫描的特点是,机器扫描、效率高,但是没不够灵活,扩展比较负责。
经过不少时间的分析,最后是我们选择了Findbugs作为静态检查工具。以后
将以此为突破口,进行该项工作。下面简单介绍该工具。
Findbugs是一个在java程序中查找bug的程序,它查找bug模式的实例,
也就是可能出错的代码实例,注意Findbugs是检查java字节码,也就
是*.class文件。其实准确的说,它是寻找代码缺陷的,很多我们写
的不好的地方,可以优化的地方,它都能检查出来。例如:未关闭的数
据库连接,缺少必要的null check,多余的 null check,多余的if后置
条件,相同的条件分支,重复的代码块,错误的使用了"==",建议使用
StringBuffer代替字符串连加等等。而且我们还可以自己配置检查规
则(做哪些检查,不做哪些检查),也可以自己来实现独有的校验规
则(用户自定义特定的bug模式需要继承它的接口,编写自己的校验类,属于高级技巧)。

Findbugs是一个静态分析工具,它检查类或者JAR 文件,将字节码与一组
缺陷模式进行对比以发现可能的问题。Findbugs自带检测器,其中有
60余种Bad practice,80余种Correctness,
1种 Internationalization,
12种Malicious code vulnerability,
27种Multithreaded correctness,
23种Performance,
43种Dodgy。

--------------------------------------------------river.liu 2010.3.30
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

白盒测试之静态检查 的相关文章

  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • 将多模块 Maven 项目导入 Eclipse 时出现问题 (STS 2.5.2)

    我刚刚花了最后一个小时查看 Stackoverflow com 上的线程 尝试将 Maven 项目导入到 Spring ToolSuite 2 5 2 中 Maven 项目有多个模块 当我使用 STS 中的 Import 向导导入项目时 所
  • 针对约 225 万行的单表选择查询的优化技术?

    我有一个在 InnoDB 引擎上运行的 MySQL 表 名为squares大约有 2 250 000 行 表结构如下 squares square id int 7 unsigned NOT NULL ref coord lat doubl
  • 处理大数据二进制文件

    我正在处理包含原始数据的大型二进制文件 每个大约 2 GB 这些文件具有明确定义的结构 其中每个文件都是一个数组events 每个事件都是一个数组data banks Each event and data bank有一个结构 header
  • 有没有什么好的工具可以查看和浏览ant构建文件?

    我发现很难读取 ant 构建文件 特别是如果构建文件包含大量导入文件 例如属性文件和其他 xml 构建文件 因此 我想知道是否有一些好的工具可以提供帮助 例如在 IDE 中查看和浏览源代码 提前致谢 Try 盛大 这里 http www g
  • StatET调试工具

    我想我只是很密集 但我似乎无法弄清楚如何在 Eclipse 中的 R 中使用调试工具 StatET 插件 有人有关于这个主题的任何提示或教程吗 StatET 2 00 现在对高级 可视化调试提供实验性支持 需要 Eclipse 3 6 或
  • C++ Exp 与 Log:哪个更快?

    我有一个 C 应用程序 需要比较两个值并决定哪个值更大 唯一的复杂之处是一个数字在对数空间中表示 而另一个则不是 例如 double log num 1 log 1 23 double num 2 1 24 如果我想比较num 1 and
  • eclipse中导入项目文件夹图标

    我在 Eclipse 工作区中新导入的 Maven 项目有J and M项目文件夹顶部的图标 项目和包资源管理器 而其他导入的 Maven 项目只有一个J icon 有人可以解释其中的区别吗 该项目有J装饰器被称为 Java 项目和具有M装
  • R 数据结构的运算效率

    我想知道是否有任何关于操作效率的文档R 特别是那些与数据操作相关的 例如 我认为向数据框添加列是有效的 因为我猜您只是向链接列表添加一个元素 我想添加行会更慢 因为向量保存在数组中C level你必须分配一个新的长度数组n 1并将所有元素复
  • 在 MySQL 数据库中保持 TEXT 字段唯一的最佳方法

    我想让 TEXT 字段的值在我的 MySQL 表中唯一 经过小型研究 我发现由于性能问题 每个人都不鼓励在 TEXT 字段上使用 UNIQUE INDEX 我现在想用的是 1 创建另一个字段来包含 TEXT 值的哈希值 md5 text v
  • 如何在 Eclipse .classpath 文件中使用环境变量?

    在 Windows 中 我有一个环境变量 EXTERNAL LIB ROOT 指向 C Program Files MyExternalLibRoot 在另一台计算机上 它可能指向 C ExternalLibs 在 ant build xm
  • 如何在 Eclipse Java 动态 Web 项目中使用 .properties 文件?

    我正在 Eclipse 中开发动态 Web 项目 我创建了一个 properties 文件来存储数据库详细信息 用户名 密码等 我通过右键单击项目和 New gt File 添加它 我使用了Java util包Properties类 但它不
  • 这是内存泄漏还是误报?

    这是我的代码 import java io BufferedReader import java io FileNotFoundException import java io FileReader import java util Sca
  • 我的用例可以合并到单个查询中而不影响性能吗?

    我主要着眼于改善表现查询的内容以及是否能够解决单一查询对于我的用例之一 解释如下 涉及到2张表 Table 1 EMPLOYEE column1 column2 email1 email2 column5 column6 Table 2 E
  • BPEL Designer for Eclipse:如何调试 BPEL 流程

    我正在尝试调试 BPEL 流程 我使用 BPEL Designer for Eclipse 3 7 2 制作它 我使用 Ode 1 3 作为引擎 我不知道如何调试我的过程 我可以在调试会话中将它部署在 ode 上 但我真的不明白之后我能做什
  • 如何改变HTML5视频的播放速度?

    如何更改 HTML5 中的视频播放速度 我查过视频标签的属性 https www w3schools com html html5 video asp在 w3school 但无法做到这一点 根据这个网站 http www chipwreck
  • 简单循环的速度[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我用Java做了一个简单的循环只是为了测试速度 与 C 中的相同循环相比 它需要更多的时间 20亿次迭代大约需要6 5秒当它被执行时
  • 由于 maven-surefire-plugin,Maven 构建失败

    我这里有类似的问题eclipse 中缺少 maven surefire plugin https stackoverflow com questions 23588957 maven surefire plugin missing in e
  • 如何在 JUnit 中缩短(或隐藏)包名称?

    我在 JUnit 中有很长的包名称 这使得很难看到正在运行哪些测试 不幸的是 使用 Eclipse 的 缩写包名称 不起作用 有没有办法隐藏或者最好缩短它们 None
  • 改进C++逐行读取文件的能力?

    我正在解析大约 500GB 的日志文件 我的 C 版本需要 3 5 分钟 我的 Go 版本需要 1 2 分钟 我正在使用 C 的流来流式传输文件的每一行以进行解析 include

随机推荐

  • ubuntu 下安装Valgrind 内存泄漏检查工具

    Valgrind 安装 1 到www valgrind org下载最新版valgrind 3 7 0 tar bz2 2 解压安装包 tar jxvf valgrind 3 7 0 tar bz2 3 解压后生成目录valgrind 3 7
  • 【超快捷】Windows系统自带的快捷键合集

    总览 一 常用 Win E 打开我的电脑 Win R 打开 运行 对话框 Win L 锁定计算机 Ctrl Shift Esc 打开任务管理器 Ctrl Alt Delete 打开安全窗口 F2 重命名文件 F5 刷新当前页面或者桌面 Al
  • ERP让员工和企业双赢

    企业的科学管理 离不开数字化 而数字化 就需要企业积累数据 这就离不开ERP ERP实施 如果只是员工增加了数据录入量 而没有获得实际的益处 比如 效率提高 难度降低等 则员工内心会抵制ERP 员工要的是方便 企业要的是数据 必须兼顾二者
  • 快速理解聚集索引和非聚集索引

    数据库的索引 听起来挺神秘的 仔细想想 这些索引 其实就是平时咱们查东西时候常用的两种手段 无非就是为了提高我们找东西的效率而已 那么我们平时又是怎么查东西呢 聚集索引 聚集索引 来源于生活尝试 这中索引可以说是按照数据的物理存储进行划分的
  • 工作中遇到的数据库死锁问题 - 排查方案 CannotAcquireLockException

    问题 重现 正常情况下 销售人员在使用我们的销售系统为客户创建订单时候 后台java代码就会开启事务 然后往数据库中添加订单信息和订单详情信息 以及一些其他业务操作 但由于某次异常操作 可能是网络或者其他的原因 导出系统出现问题无法工作 于
  • Font Awesome矢量版,十六进制版,WPF字体使用

    Font Awesome为您提供可缩放的矢量图标 您可以使用CSS所提供的所有特性对它们进行更改 包括 大小 颜色 阴影或者其它任何支持的效果 WPF可以使用FontAwesome字体 Android可以使用FontAwesome字体 需要
  • python小游戏毕设 接金币小游戏设计与实现 (源码)

    文章目录 1 项目简介 1 游戏介绍 2 实现效果 3 开发工具 3 1 环境配置 3 2 Pygame介绍 4 具体实现 5 最后 1 项目简介 Hi 各位同学好呀 这里是L学长 今天向大家分享一个今年 2022 最新完成的毕业设计项目作
  • 【华为OD机试真题】日志采集系统(python)100%通过率 超详细代码注释 代码优化

    华为OD机试真题 2022 2023 真题目录 点这里 华为OD机试真题 信号发射和接收 试读 点这里 华为OD机试真题 租车骑绿道 试读 点这里 日志采集系统 时间限制 1s空间限制 256MB限定语言 不限 题目描述 日志采集是运维系统
  • 【Android】BottomNavigationView+ViewPager实现底部导航栏(步骤+源码)

    吐糟大会 时隔好久再一次在博客上与大家见面 上一年九月份怀疑自己不适合这行毅然辞职 我没结婚没车贷没房贷本以为能很潇洒 但现实给我开了个玩笑 我发现除了这一行其他什么都不会 也许是我很懒吧 为了能吃饱饭我再次踏入这一行 回归初衷为了让更多刚
  • RDF与可视化

    Rudolf RDFViz Exploring tools for RDF Graph Visualisation http www ilrt bris ac uk discovery rdf dev rudolf rdfviz To vi
  • Win10系统无法打开chm文档提示无法显示该页面怎么办?

    网上下载了一个chm文档 但打开后发现无法显示该页 提示 确保 Web 地址 ieframe dll dnserrordiagoff htm 正确 通过查找相关资料 迅速了解决该问题 特此分享 一 CHM文档定义 CHM Compiled
  • 查看电脑CPU是否支持虚拟化

    有两次方法 使用securable 可以在一下地址下载https www grc com files securable exe 安装双击就会出现如图 32 64 就是表示电脑的位数 D E P 表示的是硬件 Virtualization表
  • VSCode 下python输出中文乱码问题

    在处理这个问题之前 你首先得知道为什么会出现这个这个问题 你在使用VScode编辑代码时 代码页面中文正常 而终端输出那里中文却为乱码 出现这个现象的原因是因为编码方式的不同 VScode的默认编码方式为UTF 8 中国地区下cmd的编码方
  • github下载的项目如何build--如何利用configure.ac和Makefile.am,生成Makefile。

    环境是Ubuntu18 04 1 aclocal命令根据configure ac文件的内容 自动生成aclocal m4文件 2 autoconf命令会根据configure ac和aclocal m4文件 生成configure文件 3
  • 基于 Flutter+Dart 聊天实例

    1 项目介绍 Flutter是目前比较流行的跨平台开发技术 凭借其出色的性能获得很多前端技术爱好者的关注 比如阿里闲鱼 美团 腾讯等大公司都有投入相关案例生产使用 flutter chatroom项目是基于Flutter Dart chew
  • TortoiseGit 入门指南11:还原与重置

    Git 就像个时光机器 能让我们还原到任何提交 还原未提交的更改 假如我们在查看一个干净的代码仓库 干净意味着工作区中的文件保持着最后一次提交的状态 没有修改 在查看的过程中 我们有意或无意的修改了工作区中的文件 之后我们想把这些文件恢复成
  • STLINK-V3 STDC14座转2.54mm排针转接板Kicad工程

    简介 这是一个 STLINK V3 STDC14座转2 54mm排针转接板Kicad工程 STDC14座实际工作中不太方便 所以搞了这个转接板 另外转接版上提供了可选的电源输出功能 An adapter board for STLINK V
  • EMC测试仪器_EMC测试整改流程及常见问题

    EMC主要是通过测试产品在电磁方面的干扰大小和抗干扰能力的综合评定 是产品在质量安全认证重要的指标之一 很多产品在做产品安全认证时都会遇到产品测试不合格的情况 尤其是在电磁兼容测试 即EMC测试 出错频率更是普遍 当产品一旦测试不合格 那么
  • J-002 Jetson电路设计之电源设计--NANO && XAVIER NX

    Jetson电源设计 1 电源说明 1 1 电源和系统引脚描述 1 2 电源控制框图详情 2 上电的时许 2 1 框图分析 2 2 上电时序 3 GND引脚 1 电源说明 Jetson NANO和XAVIER NX核心板的电源为DC 5V
  • 白盒测试之静态检查

    态检查一般是检查编码标准规范 错误列表 编码规范往往团队 会根据自己的经验和风格进行设置一些规范 现在很多IDE工具都会 在编辑代码的时候实时的提醒是否符合代码风格 错误列表 一般 是代码潜在的bug 由于某种代码写法虽然没有语法错误 但是