阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

使用 Code Digger 分析.NET 中的 public 代码

  • 2013-05-06
  • 本文字数:673 字

    阅读完需:约 2 分钟

Code Digger 是 Visual Studio 2012 的一个扩展,它是基于 Pex 实现的,能够分析.NET 代码中可能的执行路径。在 Visual Studio 编辑器中运行该工具后,会显示一个表格,开发者可以通过分析表格中的每一行来理解代码的行为 。

该扩展由微软的软件工程研究(Research in Software Engineering,RiSE)团队于近期发布,它不仅能计算和显示输入 - 输出对,还能定位 bug、异常和断言失败。此外,该扩展仅对.NET 可移植类库中的 public 代码有效。

Code digger 使用 Pex 引擎和微软研究院的 Z3 约束求解器来系统地分析代码中的所有分支,尽量生成代码覆盖率较高的测试套件。

要使用 Code Digger,开发者需要利用 Visual Studio 2012 创建一个可移植类库项目,编写 public 代码,右键点击代码编辑器并选择“ Generate Inputs / Outputs Table”选项。接下来将会看到一个表中列出了参数值,它覆盖了代码中的所有边界情况。

第一步

第二步

Code Digger**** 生成的输出

微软首席研究软件设计工程师 Nikolai Tillmann 说道:“通过将代码 限定于可移植类库,我们避免了代码依赖 Pex 引擎尚不支持的某个特定平台的问题。我们的目标是让 Pex 的全部功能都能够用于 Visual Studio 2012,并且支持 Fakes 而不是 Moles,但这种组合功能目前还没有准备好。”

要了解 Code Digger 包含的功能,还可以访问 Pex4Fun

查看英文原文: Analyze Public .NET Code with Code Digger


感谢臧秀涛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-05-06 05:191424
用户头像

发布了 256 篇内容, 共 68.5 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

知识分享|如何设计有效的帮助中心,不妨来看看以下几点

Baklib

【爬虫+可视化】Python爬取疫情并可视化处理数据(爬虫入门案例)

BROKEN

Python 8月月更

SRv6网络的安全解决方案

穿过生命散发芬芳

8月月更 SRv6

git操作

Jason199

git 8月月更

Android条件控制宏编译

桑榆

8月月更

工业物联网 —— 新型数据库的召唤

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

经验分享|盘点企业进行知识管理时的困惑类型

Baklib

多个平台显示IP属地,必须大力推行互联网实名制

石头IT视角

Nacos配置中心之客户端长轮询

急需上岸的小谢

8月月更

基于YOLOV5行人跌倒检测实验

阿炜小菜鸡

8月月更 行人检测

Go 语言快速入门指南:什么是 TLS 安全传输层协议

宇宙之一粟

安全 Go 语言 8月月更

区块链或者智能合约开发的 5 种最佳编程语言

devpoint

区块链 以太坊 8月月更

《MySQL入门很轻松》第2章:MySQL管理工具介绍

乌龟哥哥

8月月更

克服项目管理中恐惧心理

踏雪痕

项目管理 8月月更

七日算法先导(三)—— 快速排序,插入排序

工程师日月

8月月更

Service Mesh落地路径

阿泽🧸

Service Mesh 8月月更

手写分布式配置中心(1)

分享干货的你

java; spring-boot SpringCould 签约计划第三季

头脑风暴:完全背包

HelloWorld杰少

8月月更

【数据挖掘概论】数据挖掘的简单描述

晴天

8月月更

【python小游戏】用python写一款小游戏--贪吃蛇

BROKEN

8月日更 8月月更

开源一夏 | 基于若依springboot架构实现数据多维统计

六月的雨在InfoQ

开源 8月月更

Axure9基本交互操作(一)

乔乔

8月月更

前端常考react相关面试题(一)

helloworld1024fd

React

那些年,在Linux指令上踩过的坑~

芒果酱

Linux 签约计划第三季

Discourse 清理存储空间的方法

HoneyMoose

动态内存开辟(C语言)

孤衫

编程语言 C语言 动态内存 8月月更

C++对象的初始化和清理之构造函数和析构函数分析与实例(一)

CtrlX

c++ 面向对象 后端 代码 8月月更

2022前端秋招vue面试题

helloworld1024fd

Vue

python绘制一个时间的七段数码管实例基本的七段数码管绘制

BROKEN

8月日更 8月月更

开源一夏 | 云服务器ECS安装Mysql、JDK、RocketMQ

六月的雨在InfoQ

开源 8月月更

学生管理系统架构设计

张立奎

使用Code Digger分析.NET中的public代码_.NET_Anand Narayanaswamy_InfoQ精选文章