写点什么

用 Roslyn 项目分析代码

  • 2012-04-27
  • 本文字数:620 字

    阅读完需:约 2 分钟

微软这个月在 Redmond 召开了 Lang.NEXT 大会,会上有一个演讲,演示了 Roslyn 项目这个代码分析工具。Dustin Campbell 的演讲“更深入了解 Roslyn 项目”对它做了介绍,并以一个示例项目代码的构建作为结束。

Roslyn 框架并没有打算用来作为可定制的编译器,它的目的是将 C#和 Visual Basic 的使用尽可能最大化。这两个语言的编译器都已经全部重新编写,这样 Roslyn 的 C#编译器用 C#开发,Roslyn 的 VB 编译器用 VB 开发。Campbell 发现:这让原来的编辑器中很多不合理的地方和 bug 都有机会修正。

Roslyn 的设计特性包括:

  • 不可变:对象不能改变,要想改变,只能在原来版本上创建新对象。
  • 完整:源代码重新表示,包括空格、注释、错误等等。
  • 弹性:用容错来处理错误。比如:失败的代码上几乎总是会做到完成语句,这样让分析器必须可以处理。
  • 高效:项目在构建快照上体现了效率,而且能够增量分析代码。

当 Roslyn 环境打开后,存在两个活跃的工作空间实例。第一个是传统工作空间,存留现在加载的 VS 解决方案。另一个实例是交互窗口(REPL)。这种分离有助于语句完成,并让 IntelliSense 在开发环境中的代码提示更为正确。

Campbell 指出:Roslyn 在 10 月份会以 Beta 版本提供,发布版本代码(1.0)不会与 Visual Studio 11 一同交付。实际上,它会作为未来 VS 的一部分发布。尽管 Campbell 没有明确说明:考虑到 Beta 版本支持 VS2010,看来微软会将其独立于正式的 VS 发布进行部署。

查看英文原文: Code Analysis with Project Roslyn

2012-04-27 11:092101
用户头像

发布了 479 篇内容, 共 171.7 次阅读, 收获喜欢 52 次。

关注

评论

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

【云原生 | 从零开始学Kubernetes】五、Kubernetes核心技术Pod

泡泡

Docker 云计算 云原生 k8s 9月月更

Docker多阶段构建实战(multi-stage builds)

程序员欣宸

Docker 9月月更

js高频手写题总结

helloworld1024fd

JavaScript 前端

关于 Angular 应用 tsconfig.json 中的 lib 属性

汪子熙

typescript 前端开发 angular web开发 9月月更

2022-09-23:整数数组 stations 表示 水平数轴 上各个加油站的位置。给你一个整数 k 。 请你在数轴上增设 k 个加油站, 新增加油站可以位于 水平数轴 上的任意位置,而不必放在整数

福大大架构师每日一题

算法 rust 福大大

js常见手写题总结

helloworld1024fd

JavaScript 前端

Serverless遇到 FinOps: Economical Serverless

华为云开发者联盟

云原生 后端 企业号九月金秋榜

融云员工服务台,跟“干不完”说再见

融云 RongCloud

IT职场

数据库系统是什么?它由哪几部分组成?

乌龟哥哥

9月月更

大数据调度平台Airflow(七):Airflow分布式集群搭建原因及其他扩展

Lansonli

airflow 9月月更

Http轮询分为长查询和短查询总结

知识浅谈

HTTP 9月月更

跟我学Python图像处理丨带你掌握傅里叶变换原理及实现

华为云开发者联盟

Python 人工智能 企业号九月金秋榜

react20道高频面试题答案总结

beifeng1996

前端 React

这些react面试题你会吗,反正我回答的不好

beifeng1996

前端 React

Code For Better 谷歌开发者之声——Google Cloud谷歌云

Fire_Shield

云原生 Google Cloud 9月月更

【云原生 | 从零开始学Kubernetes】六、Pod的镜像拉取策略与各种机制

泡泡

Docker 云计算 云原生 k8s 9月月更

深度剖析Istio共享代理新模式Ambient Mesh

华为云开发者联盟

云计算 云原生 后端 企业号九月金秋榜

[SpringBoot]多环境配置,配置文件分类

十八岁讨厌编程

Java 后端开发 9月月更

开发者有话说|如何写出更加优雅的代码

闫同学

个人成长

INFINI 产品更新啦 20220923

极限实验室

elasticsearch console Gateway infini 极限实验室

VUE v-bind 数据绑定

HoneyMoose

前端面试经常被问的题目,自己总结了一下

loveX001

JavaScript 前端

TCP协议和UDP协议详细介绍

阿柠xn

TCP 计算机网络 协议族 UDP协议 9月月更

Struts实现登录

Struts2 9月月更

JavaWeb核心之ServletContext

楠羽

Servlet 笔记 9月月更

SpringBoot初识

十八岁讨厌编程

Java 后端开发 9月月更

物联网实践分享

彭发红

自动化测试神器playwright的安装及常见问题解决

迷彩

playwright 学习记录 9月月更

19道高频vue面试题,顺便写一下自己的答案

bb_xiaxia1998

Vue 前端

NFTScan 与 ET.XYZ 在 NFT API 数据层面进行深度合作

NFT Research

区块链 NFT web3

[SpringBoot]配置文件格式、yaml配置及读取

十八岁讨厌编程

Java 9月月更

用Roslyn项目分析代码_.NET_Jeff Martin_InfoQ精选文章