Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >编写路径覆盖工具

编写路径覆盖工具
EN

Stack Overflow用户
提问于 2009-08-18 13:15:49
回答 1查看 2.5K关注 0票数 4

目前,我们的一个生产系统是由3000多个程序编写的1986年到现在。代码库是用非标准语言编写的,不幸的是缺乏现代的测试工具。

为了提高我们的代码质量,我一直致力于整合过程和构建工具,以改进开发和测试。我刚刚有一个完整的行覆盖工具,这样我们就可以在开发过程中帮助识别死代码+未经测试的代码。

现在,我想开始在工具中添加路径覆盖。

我该怎么做?

鉴于此:

1)行覆盖工具充当注入代码的预处理器。

2)我已经有能力收集我在上述代码中设置的统计数据。

在程序执行时我应该记录哪些数据,以及如何解释它?

如何通过表示结果?

我已经读过关于如何开始“编写”代码覆盖工具?的问题,它是关于Java的,但是没有帮助(包括“任意语言的分支覆盖变得容易”)。

感谢事先给出的指导!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-18 23:55:41

要进行路径覆盖,您需要以某种方式获取程序控制流。一种很明显的方法是构造一个真实的控制流图,然后遍历其中的段来选择用于路径覆盖分析的“路径片段”(例如,基本路径)。(您可以尝试通过字符串攻击源代码来实现这一点,但很可能失败;解析和流分析太复杂)。

有关基本路径的良好堆栈溢出讨论,请参见基本路径覆盖的意义是什么?

要实现所需的路径覆盖工具,您可能需要彻底解析完整的遗留语言。对于3000个程序和对测试的强烈需求,使用工业强度解析器和基础设施进行测试将是有意义的。

我们的DMS软件重组工具包不仅可以用于构造解析器,还可以用来构建收集路径覆盖数据所需的控制流分析和检测。(如果您只想收集分支覆盖率数据,那么“任意语言的分支覆盖率”就说明了这一点,但是DMS不仅仅是解析)。如果需要,DMS还支持构造控制图(和数据流),就像在本例中所做的那样;请参见DMS构造控制流图

DMS用于为C、Java和COBOL构建控制和数据流分析器,并用于为一些30+语言构建解析器。如果您认真对待这个问题,它可以处理您的遗留语言。

编辑10/31/2011: DMS现在可以计算C++的控制流,因此它将是C++路径覆盖工具的一个很好的基础。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1296577

复制
相关文章
如何存储用户的密码才能算安全?
前段时间将一个集成了 spring-security-oauth2 的旧项目改造了一番,将 springboot 升级成了 springboot 2.0,众所周知 springboot 2.0 依赖的是 spring5,并且许多相关的依赖都发生了较大的改动,与本文相关的改动罗列如下,有兴趣的同学可以参考:Spring Security 5.0 New Features 。其中一个比较有意思的改动---- Spring Security 5.0 重构了密码编码器的实现(Password Encoding,由于大多数 PasswordEncoder 相关的算法是 hash 算法,所以本文将 PasswordEncoder 翻译成‘密码编码器’和并非‘密码加密器’),引起了我兴趣官方称之为
kirito-moe
2018/07/25
1.4K0
如何存储用户的密码才能算安全?
针对每个用户的作业(针对用户的定期事件)
-----------------------------------------------------------------------------------------------------------------------------
liulun
2022/05/09
3000
C语言 | 统计选票结果的程序
例38:有三个候选人,每个选民只能投给一个人,要求用C语言编一个统计选票的程序,先后输入备选人的的名字,最后输出各人的得票结果。
小林C语言
2020/12/18
2K0
C语言 | 统计选票结果的程序
为每个用户设置合适的屏幕亮度
移动设备的屏幕对于用户体验至关重要。Android 9 Pie 中改进的 “自动调节亮度” 特性会自动将屏幕调整到您偏好的亮度级别,使您在任何光线条件下都能获得最佳体验。
Android 开发者
2018/12/19
1.6K0
如何安全传输与存储用户密码?
我们开发网站或者APP的时候,首先要解决的问题,就是「如何安全传输和存储用户的密码」。一些大公司的用户数据库泄露事件也时有发生,带来非常大的负面影响。因此,如何安全传输存储用户密码,是每位程序员必备的基础。本文将跟大家一起学习,如何安全传输存储用户的密码。
macrozheng
2021/01/08
1.3K0
如何安全传输与存储用户密码?
如何查看每个城市的生意如何?
”销售订单表”记录了销售情况,每一张数据表示哪位顾客、在哪一天、哪个网点购买了什么产品,购买的数量是多少,以及对应产品的零售价
猴子数据分析
2022/02/12
1.3K0
如何查看每个城市的生意如何?
闲聊用户画像的存储
现在的用户画像,动不动就是几千几万个标签,标签一多就出现了一些需要克服的难题,比如下面两个:
木东居士
2019/02/28
3.6K0
Redis 如何存储上亿级别的用户状态?
如何用redis存储统计1亿用户一年的登陆情况,并快速检索任意时间窗口内的活跃用户数量。
芋道源码
2021/01/25
1.4K0
Redis 如何存储上亿级别的用户状态?
Redis 如何存储上亿级别的用户状态?
如何用redis存储统计1亿用户一年的登陆情况,并快速检索任意时间窗口内的活跃用户数量。
肉眼品世界
2021/01/25
7010
Redis 如何存储上亿级别的用户状态?
mysql查询每个用户的第一条记录_mysql怎么创建用户
方法1:查询出结果后将时间排序后取第一条(只能取到一条,并且不能查询不同客户的记录)
全栈程序员站长
2022/10/04
6.9K0
mysql查询每个用户的第一条记录_mysql怎么创建用户
Redis 如何存储上亿级别的用户状态?
如何用redis存储统计1亿用户一年的登陆情况,并快速检索任意时间窗口内的活跃用户数量。
二哥聊运营工具
2021/12/17
6690
Redis 如何存储上亿级别的用户状态?
用户密码传输和存储的保护
软件设计的过程中,用户的密码信息最为敏感,在进行用户登录验证时,除了将密码在传输的过程中,进行md5加密,避免密码明文传输过程中被截获外,还有一个就是密码在数据库中的存储安全问题。 常用的方案是对密码
码农阿宇
2018/04/18
1.1K0
用户密码传输和存储的保护
hive sql(六)—— 每个用户连续登录最大天数
分析中第3点在hive sql系列(三)中计算连续日活中也用到了日期差值,参考链接:
大数据最后一公里
2021/08/05
3K0
每个用户都应该知道的Ubuntu键盘快捷键
无论使用什么操作系统,键盘快捷键都可以帮助你快速上手,可以在启动应用程序或导航到所需窗口时节省时间和精力。
用户6543014
2020/03/11
2.5K0
打造用户态存储利器,基于SPDK的存储引擎Blobstore & BlobFS
Blobstore是位于SPDK bdev之上的Blob管理层,用于与用户态文件系统Blobstore Filesystem (BlobFS)集成,从而代替传统的文件系统,支持更上层的服务,如数据库MySQL、K-V存储引擎Rocksdb以及分布式存储系统Ceph、Cassandra等。以Rocksdb为例,通过BlobFS作为Rocksdb的存储后端的优势在于,I/O经由BlobFS与Blobstore下发到bdev,随后由SPDK用户态driver写入磁盘。整个I/O流从发起到落盘均在用户态操作,完全bypass内核。此外,可以充分利用SPDK所提供的异步、无锁化、Zero Copy、轮询等机制,大幅度减少额外的系统开销。它们之间的关系如下所示(以NVMe bdev为例):
Linux阅码场
2019/06/05
4.9K0
打造用户态存储利器,基于SPDK的存储引擎Blobstore & BlobFS
如何给每个RM添加约束?
在DFX设计中,我们也会碰到类似的情形,即给同一个RP(Reconfigurable Partition)下的不同RM(Reconfigurable Module)添加不同的约束。这时要考虑几个因素:同一个RP下不管有几个RM,在设计中均对应同一个实例化的名字。这意味着不能仅仅通过SCOPE_TO_CELLS将这些约束对应到不同的RM上。另外,每个RM只有在自身对应的configuration上才有效,所以要保证在这个configuration上对应的RM的约束也要有效。从下图可以看到,当前这个DFX设计中有一个RP,名字为图中红色方框所示,该RP下有两个RM,分别为rp1rm1和rp1rm2。
Lauren的FPGA
2023/08/18
2110
如何给每个RM添加约束?
MySQL存储过程,视图,用户管理
一张虚拟表,就是将一个经常被使用的查询作为一个虚拟表,开发者查询的时候不需要再次书写SQL,而是直接调用对应的视图就可,调用视图以后MySQL会执行这个查询SQL。
石的三次方
2021/01/05
9330
Spring Security 简单配置用户存储
@EnableWebSecurity注解将会启动Web安全功能,但它本身并没有什么功能。Spring Security必须配置在一个实现了WebSecurityConfigurer的bean中,或者扩展WebSecurityConfigurerAdapter,扩展该类是最简单的配置方法。
Tim在路上
2020/08/04
7800
保存用户信息到本地存储
简介:在页面加载时从本地存储中恢复数据,并将已保存的数据显示在对应的输入框中。一起来看看:
Dabenshi
2023/08/27
2660
点击加载更多

相似问题

查询Django中每个用户的最新选票

12

Android固定设置限制为每个用户1张选票

20

用于捕获选票和聚合选票的数据存储

13

确保数据库中每个用户、每个页面都有一张选票

31

Rails:允许用户销毁选票

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文