parasoft Jtest 使用教程:RuleWizard与BugDetective静态分析

RuleWizard

RuleWizard(仅在Architect and Server edition中提供)允许您为Java代码语法、JSP代码和代码风格问题创建自定义的代码规范规则。Jtest可以自动实施任何在 RuleWizard 中创建的有效规则。通过创建和检查自定义规则,团队可以验证独特的项目和组织需求、以及防止最常见的错误重复出现。

使用 RuleWizard,就能以图形化的方式创建规则(通过创建流程图形式的规则表示法),或者自动创建规则(通过提供演示样本规则违例的代码)。编写或修改规则时,无需任何编码或解析器的知识。

打开 RuleWizard的方法有两种:

  • 选择 “Jtest > Launch RuleWizard(Jtest > 启动 RuleWizard)”。
  • 单击Test Configurations面板的 “Static(静态)”选项卡中的 “New(新建)”按钮
  • 然后就会打开 RuleWizard GUI。“RuleWizard User's Guide”(《RuleWizard 用户指南》)(通过在 RuleWizard GUI 中选择 “Help > Documentation(帮助 > 文档)”可阅读此书)包含关于如何修改、创建和保存自定义规则的信息。

BugDetective静态分析

BugDetective 是一类新的静态分析技术,该技术使用了几种分析技巧,包括模拟应用程序执行路径,以识别可能触发运行时缺陷的路径。检测到的缺陷包括,空指针异常、资源泄漏、SQL注入和其他安全漏洞问题。

注意:如需使用 BugDetective,则需要用Server Edition (服务器版)。

BugDetective 是一类新的静态分析技术,该技术使用了几种分析技巧,包括模拟应用程序执行路径,以识别可能触发运行时缺陷的路径。检测到的缺陷包括,空指针异常、资源泄漏、SQL注入和其他安全漏洞问题。

由于该分析涉及到识别和跟踪复杂路径,它会暴露通常可逃避编码规则静态分析和单元测试的错误,这些错误难以通过手动测试或检查找到。对于那些具有遗留代码库和嵌入式代码(这些情况下,此类错误的运行时检测效果较差或根本不可能)的用户而言,BugDetective可在不执行代码的情况下显露错误的功能,就特别重要。

BugDetective独特的静态分析通过搜索代码中的 “可疑点”,开始分析正在测试的源码。可疑点是潜在的错误点。这些可疑点在 BugDetective 规则中被定义。只要识别了可疑点,BugDetective 就调查导致该可疑点的可能执行路径,并检查是否有任何确实违反BugDetective规则的路径存在。如果找到了这样的路径,就报告一个违例。

例如,检测可能的 “除数为零”情形的规则就规定,任何使用了"/" 或 "%" 运算符的点都是可疑的。然后它检查分母中的变量,在导致它为零的任何可能执行路径的点中,是否能保持零值。如果是的话,则会报告一条错误。

对于每个发现的错误,分层结构流路径数据都会详细准确地列出导致被识别错误的完整执行路径,并以显现出错误的那一代码行作为结束。为减少每个被发现问题的诊断和纠正所需要的时间和工作量,流路径详细信息还会补充扩展注释(例如,一条关于 “避免空指针解除引用”违例的描述就包含这样的注释,描述哪些变量、在流路径的哪一点包含 null 值)。

为使分析过程更灵活、更适合于项目的独特要求,可以参数化某些规则。因此,BugDetective 甚至可以用来检测与特定的 API 使用相关的违例。

通过使用 BugDetective,开发团队可以获得以下关键好处:

  • 用现有资源执行更综合的测试:BugDetective 对其它测试技术进行了补充,允许您发现一些问题,如果不使用 BugDetective,那么可能需要开发、执行和维护复杂的测试用例才能发现这些问题。
  • 自动识别通过了多个单元的错误:传统的自动单元测试生成功能可有助于您识别单个编译单元内的错误。这很关键。不过,大多数开发人员在已执行了彻底的单元级别测试、纠正了所有明显的问题、集成了代码之后不久,就会遇到诸如空指针解除引用之类的问题。这些问题需要好几天才能诊断出来,因为它们产生于模糊或复杂的执行路径,而该路径已通过了多个函数,甚至多个编译单元。通过使用 BugDetective,可以自动识别相同的问题。
  • 关注实际错误和设计缺陷:BugDetective 自动识别独立于数据或独立于流的错误,并具有合理的必然性。当 BugDetective 报告一条违例时,通常情况是,存在一个设计缺陷,该缺陷因为一个简单的违例(例如除数为零或资源泄漏)而明显地暴露自己。
  • 查找 API 误用:实际上,许多错误是因为以错误的自变量调用了某个API,或者没有正确地处理API返回的值。例如,当参数 1 为 true 时,某个API可能预期参数 2 将有一个非空自变量,或者该 API 可能将对象中的某个字段设置为null。通过执行过程间分析,BugDetective 可以指出此类 API 使用中的不一致性。

查看更多测试分析资讯和产品推荐>>>

查看更多parasoft测试产品

转载于:https://my.oschina.net/zhujian111/blog/841893

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值