白盒测试之静态检查

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(使用前将#替换为@)

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

  • 如何优化 R 中的 sapply 来计算数据帧上的运行总计

    我在 R 中编写了一个函数来按月份计算累积总数 但随着数据集变大 我的方法的执行时间呈指数增长 我是一名 R 程序员新手 你能帮我提高效率吗 该函数以及我调用该函数的方式 accumulate lt function recordnum d
  • 调整 Oracle 数据库以加快启动速度(闪回)

    我正在使用 Oracle 数据库 11 2 我有一个场景 我发出FLASHBACK DATABASE经常 似乎有一个FLASHBACK DATABASECycle 会重新启动数据库实例 大约需要 1 分钟 我的设置花了 7 秒 数据库很小
  • 升级eclipse后Groovy失败

    最近升级到 Eclipse 2020 12 4 18 0 从那以后 Groovy 就不再工作了 升级了 Groovy 没有任何改进 现在正在运行 展开所有 已安装的内容 树 Eclipse Groovy 开发工具 org codehaus
  • Eclipse Kepler 在 64 位 ubuntu 上冻结

    几天前我刚刚将 Ubuntu 升级到 14 04 并在此过程中从 32 位切换到 64 位 从那时起 Eclipse 就变得非常不稳定 运行几分钟后 它将开始随机冻结越来越长的时间 特别是在代码完成时 已经必须禁用它 而且在剪切 粘贴时 偶
  • 运行包含库 jar 的 jar 时出现 Java NoClassDefFoundError

    几个小时后 即使在阅读了大量文档和问题之后 我还是束手无策 我确信我错过了一些明显的东西 但我就是无法弄清楚 我创建了许多 java 文件 包括带有 main 方法的单个入口点 该类还使用一个 库 类 该类位于 jar 文件 mylib j
  • Eclipse 安装程序内部错误:注册表目录不可用

    我曾经像平常一样使用 Oomph Eclipse 安装程序 直到我更改了注册表中的用户配置文件 以删除烦人的空格 从那时起 除了 eclipse 安装程序之外 我没有遇到任何问题 它不断尝试在旧用户文件夹中查找注册表目录 该文件夹已不存在
  • 如何加速我的 Perl 程序?

    这确实是两个问题 但它们非常相似 为了简单起见 我想我应该把它们放在一起 Firstly 给定一个已建立的 Perl 项目 除了简单的代码优化之外 还有哪些不错的方法可以加速它 Secondly 用Perl从头开始编写程序时 有哪些好的方法
  • Getter 和 Setter。有性能开销吗?

    我的 C 项目中有一个粒子系统引擎 粒子本身只是没有函数的变量结构 目前 每个粒子 Particle 都是通过直接访问其变量来从其父类 ParticleSystem 进行更新 例如 particle x particle vx 然而 我正在
  • Eclipse 在单独的窗口中打开代码

    我正在 eclipse 中编程 在两个显示器设置上运行 在其中一台显示器上 我只获得了项目资源管理器和编辑器作为自定义透视图 而在另一台显示器上 我获得了其他工具 例如控制台 调试 任务 变量 断点等 例如 当我单击任务视图中的任务时 这将
  • 在 Eclipse Indigo 中安装 ADT 中未找到存储库错误

    当我尝试安装 ADT 时出现此错误 An error occurred while collecting items to be installed session context was profile epp package jee p
  • 我的 Delphi 11.1 调试器在 x64 项目上突然变得非常缓慢;大约一周前还可以。有什么想法吗?

    更新 拔掉网络 电缆和wifi 会导致 几乎 恢复正常的调试速度 已尝试禁用防火墙没有任何变化 但没有网络恢复正常服务 更新 2 所有 Windows x64 版本都存在缓慢问题 而不仅仅是单个大型项目 如果我构建并调试 32 位 Wind
  • 将项目导入 Eclipse 后出现“必须重写超类方法”错误

    任何时候我必须将我的项目重新导入到 Eclipse 中 如果我重新安装了 Eclipse 或者更改了项目的位置 几乎全部我的重写方法的格式不正确 导致错误 该方法必须重写超类方法 值得注意的是 无论出于何种原因 Android 项目中方法参
  • 用 OpenCL C 编写快速线性系统求解器

    我正在编写一个 OpenCL 内核 它将涉及求解线性系统 目前我的内核太慢了 提高线性系统部分的性能似乎是一个不错的起点 我还应该注意 我并没有尝试使我的线性求解器并行 我正在研究的问题在宏观层面上已经是令人尴尬的并行 以下是我编写的 C
  • Java中精确的时间测量

    Java 提供了两种获取当前时间的方法 System nanoTime and System currentTimeMillis 第一个给出的结果以纳秒为单位 但实际精度比这要差得多 许多微秒 JVM 是否已经为每台特定机器提供了最佳的价值
  • 为什么Eclipse不需要我配置JDK?

    我最近将 Eclipse 下载到 Windows 7 计算机上 该机器已经有 JRE 但我注意到它没有 JDK 我担心我必须下载 JDK 然后将 Eclipse 连接到它 当我能够在 Eclipse 中直接进行编码 编译和运行时 我感到 愉
  • 为什么我的代码在编译用于分析 (-pg) 时在多线程下运行比在单线程下运行慢?

    我正在写一个光线追踪器 最近 我在程序中添加了线程 以利用 i5 四核上的附加内核 奇怪的是 应用程序的调试版本现在运行速度变慢 但优化后的构建运行速度比添加线程之前更快 我将 g pg 标志传递给 gcc 以进行调试构建 并将 O3 标志
  • 使用 Checkstyle Plugin 时从插件调用代码时出现问题:“org.eclipse.jface”

    我正在尝试在 Rational Software Architect 7 0 0 4 上使用 eclipse cs 插件 我最近卸载了旧的 beta2 版本并安装了 beta3 插件本身按照之前的配置工作 但是每当我尝试通过 Windows
  • 配置 Eclipse/EGit 来跟踪上游存储库

    我正在使用 EGit 如新的 Eclipse 4 2 Juno 版本中提供的 我在 GitHub 上有一个存储库 是从另一个上游存储库分叉的 当我从 Github 上的存储库在 Eclipse 中创建项目时 它正确设置origin指向 Gi
  • 是否可以使用 Eclipse 的正则表达式搜索和替换转换为小写?

    我已经尝试过 L 但它似乎不是其语法的一部分 并且它的帮助没有提及任何可用的转换 我知道我可以并且知道如何从命令行执行此操作 但是 是否可以使用 Eclipse 的正则表达式搜索和替换进行大小写转换 您可以分两步完成 首先插入小写字母 那么
  • 为什么这个函数在额外读取内存时运行速度如此之快?

    我目前正在尝试了解 x86 64 上某些循环的性能属性 特别是我的 Intel R Core TM i3 8145U CPU 2 10GHz 处理器 具体来说 在循环体内添加一条额外的指令来读取内存几乎可以使性能提高一倍 而细节并不是特别重

随机推荐

  • 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 由于某种代码写法虽然没有语法错误 但是