首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

代码自动生成重构的一次探索

不过,工作量肯定和插件的个数,以及插件的代码规模肯定是成正比的,我只需要把这两点统计出来,估计一个大概的工作量还是可以的。于是,有下面的统计表: 图 3 横坐标是代码行数,纵坐标是插件个数。...然后Event.java中使用该注解: 图 4 图 5 (注:PlayerEvent 和UIEvent是Event定义的内部类,事件Id定义在内部类。...使用JavaSymbolResolver进行重构 一开始,我是通过新建工程,然后工程build.gradle文件,引入JavaSymbolResolver库的: dependencies { compile...,但是,我们都知道,java语法的角度,ClassB这么写是完全正确的!...图 12 图 13 图 14 总结 本文主要记述了我如何通过编写工具自动生成代码的方式,提高代码重构的效率。原本计划需要共计60人日的工作量,实际一个人只用了不到三周的时间便完成了任务。

2.8K10
您找到你想要的搜索结果了吗?
是的
没有找到

Prefetch到Stream:重构v1.0代码的流式请求问题与解决方案

问题背景进行v1.0代码库的重构时,我们发现当前的prefetch参数存在一些问题。因此,我们计划将prefetch参数替换为stream。同时,我们决定在所有上传的操作中使用流式传输。...解决方案进行流式传输文件时,技术角度来看,没有问题。但是如果在迭代生成器时,由于无法事先知道内容长度,因此需要使用不支持的分块编码,或者提前请求内容长度。...这将简化上传操作的代码,并提高代码的可读性。3、设置内容长度: 为了解决迭代生成器时无法提前知道内容长度的问题,我们建议进行流式传输文件时,设置内容长度。...他们可以提供有关具体实施细节和最佳实践的宝贵建议,确保代码库的重构是正确的和高效的。...总结起来,prefetch到stream的重构将带来更好的性能和可维护性,但需要注意解决流式传输文件时可能出现的问题。

11520

.Net 编译器平台 --- Roslyn

Roslyn SDK预览版包含了用于代码生成、分析和重构的最新语言对象模型的草案。 我们希望未来的预览版包含用于脚本编写和交互使用C#和Visual Basic的API支持的草案。...本文提供了Roslyn的概念概述。更多细节可以SDK预览版的演练和示例中找到。...此外,工作区层还提供一组常用的API,用于类似Visual Studio IDE的宿主环境实现代码分析和重构工具,例如“查找所有引用”、“格式化”和“代码生成”等API。...当程序不完整或格式错误时,语法树还会表示源代码的错误,通过语法树中表示被跳过或缺失的标记。 这使得语法树具有第二个属性。解析器获取的语法树完全可逆地回到其解析的文本。...符号代码和元数据之间提供了命名空间、类型和成员的共同表示。例如,源代码声明的方法和元数据导入的方法都由具有相同属性的 IMethodSymbol 表示。

22130

Metalama简介1. 不止是一个.NET跨平台的编译时AOP框架

Metalama概览 前面一篇文章介绍到了Metalama: 使用基于Roslyn的编译时AOP框架 - 云+社区 - 腾讯云 (tencent.com) Metalama是一个基于微软编译器Roslyn...的元编程的库,可以解决我开发遇到的重复代码的问题。...但是其实Metalama不止可以提供编译时的代码转换,更可以提供自定义代码分析、与IDE结合的自定义代码修复与代码重构功能 等功能。...团队可以使用这种自定义代码验证来进行那些使用.NET自带的分析器、FxCop、Resharper等工具无法提供的代码分析规则。...直接在VS扩展 - 扩展管理查找Metalama并安装即可。 image.png 插件提供了可以即时查看编译后代码的功能。

82651

Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力)

去年微软放出Roslyn的时候,微软就曾经放出过一个“尝鲜”版的VS编辑增强功能,恰恰就是重构(reflector),话说这个对控件开发太有用了,但是之前只有纠结的Resharper才有的,虽然它也不是很完整...一年过去,微软正式命名Roslyn为.NET编译平台(.NET Compiler Platform),得益于这个平台,微软VS2015完善了让开发人员欣喜的编辑器增强。...点亮的小黄灯泡可以展开一个快速动作的入口(看着看着总觉得像是Resharper搬过来的,哈哈),当代码有为题的时候,提供各种修复建议。...另外所有的重构功能也一到这里了,还增加了快捷键(Ctrl+)。 ? 支持临时变量和本地变量重构,可以轻松把一个代码块替换成本地临时变量或者反过来把临时变量的执行块放回去。...IIS,然后合适时机通过编辑执行把这段代码注入进去就可以了。

86770

Compilify——让你在浏览器编译.NET代码

Compilify是一款以服务形式出现的在线编译器,其创始人是Justin Rusbatch,它运行在Roslyn CTP[1]之上。最近开始,它已得到来自.NET社区的大量关注。...虽然我没有花时间分析过性能,不过到目前为止,该应用程序的现阶段下我还无需担心性能问题。因为应用程序域(AppDomain),除了用户代码之外,只加载了一些必要的程序集。...服务器上,会使用Roslyn代码进行解析、并检查各种语法或引用错误。然而一旦出现错误,实际上就会终止将编译单元释放到程序集的处理。任何错误都会返回给客户端,并显示给用户。...译注 [1] Roslyn CTP,传统上,编译器都是黑盒——源代码从一端进入,然后对象文件或程序集另一端出来。Roslyn项目通过开放VB和C#编译器改变了这种模型。...通过微软的“Roslyn”CTP(即Community Technology Preview,社区技术预览版)版可预览新的语言对象模型,该模型用于代码生成、分析和重构,还有即将到来的脚本支持、及C#与VB

1.2K80

译 | 使用Roslyn分析器高效编写更好的代码

因为 Roslyn 可以键入代码时生成警告,甚至您完成行之前。换句话说,您不必编译代码之后才发现您犯了一个错误。 ?...使用包管理器 UI Visual Studio 安装包。 ? 安装包后,只需解决方案资源管理器自定义分析器诊断。分析器节点将显示解决方案资源管理器的"引用"或"依赖项"节点下。...表示警告 圆圈的"x"表示严重 浅色背景上圆圈的"i"表示隐藏的严重 圆圈的"*"表示忽略的诊断 ? 然后,可以解决方案资源管理器设置规则集严重性。解决方案资源管理器,展开依赖项和分析器。...答:FxCop 是比 Roslyn 早近十年的代码分析引擎。就像我们推进编译器(例如介绍 Roslyn)一样,我们也代码分析技术推进到 Roslyn 平台。... .editorconfig 文件或文本编辑器选项页上定义代码样式时,实际上正在配置内置于 Visual Studio Roslyn 分析器。 问:分析器持续集成 (CI) 生成工作吗?

2.2K30

从零开始学习 dotnet 编译过程和 Roslyn 源码分析

本文整理我和 林德熙 学习的 dotnet 编译知识、Roslyn 源码分析知识,NuGet 知识。通过阅读本文可以零散的碎片化博客得到从零开始学习的轨迹。...(知道了这些,就不会随便在 csproj 写死常量啦) - 吕毅 Roslyn 项目文件使用条件判断 - 林德熙 了解到 csproj 文件结构之后,你可以通过迁移一些项目,并确保他们编译通过来练习...Code of Microsoft.NET.Sdk, Writing the Creative Extension of Compiling - 吕毅 还有一些 csproj 特性的使用: .NET/C# 你可以代码写多个...Main 函数,然后按需要随时切换 - 吕毅 Visual Studio 的解决方案资源管理器隐藏一些文件 - 吕毅 使用链接共享 Visual Studio 代码文件 - 吕毅 为 Visual...包 - 吕毅 MSBuild/Roslyn 和 NuGet 的 100 个坑 - 吕毅 Roslyn 通过 Nuget 引用源代码 VS 智能提示正常但是无法编译 - 林德熙 如果你的 NuGet

23140

Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码

作为 Roslyn 入门篇文章,你将可以通过本文学习如何开始编写一个 Roslyn 扩展项目,如何开始分析一个解决方案(.sln)项目(.csproj)的代码文件(.cs)。...安装必要的 NuGet 包 NuGet 包管理器搜索并安装 Microsoft.CodeAnalysis 包 —— 这是一个包含 Roslyn 所有 API 的各种 NuGet 包的合集。 ?...你可以 Documents 集合找出这个项目的所有文件进行分析。...访问者模式,由于 C# 的语法一个 C# 版本发布之后就会确定,其中各种各样类型的语法对应访问者模式的各种不同类型的数据,Roslyn 为我们构建的语法树对应访问者模式需要访问的庞大的数据结构...访问泛型参数 现在,我们继续之前打开解决方案和项目文件的代码后面增添代码: // 我们一开始打开的项目文件获取语法树。

1.7K10

除了检查语法,用上深度学习的编辑器也能自动优化代码

特别适合探究该问题的一个领域是源代码编辑(source code editing)。利用先进的控制工具和重构工具,源代码仓库为训练和测试深度学习模型提供大量数据,以研究如何表征、发现和应用编辑。... ICLR 2019 大会论文《Learning to Represent Edits》,微软利用这些资源创建无监督深度学习模型,该模型代码和自然语言领域生成合理编辑过程显示出了良好的前景。...标签集中,每个编辑都是 16 条手写的代码重构规则(被称为 Roslyn fixer)中生成的。 例如,其中模板之一是 RCS1089,其描述为「使用++/– 算子替代运算语句」。...微软观察到,大多数编辑根据应用的代码重构规则正确地聚集在一起,表明该编辑编码器分配类似表征Δ给类似语义编辑以及区分不同种类的编辑方面表现良好。 ?...为了检验这种想法是否可行,微软再次转向由 Roslyn fixer 生成的编辑数据库。 为了评估将编辑表征迁移到新语境的效果,研究者考虑了两对编辑:x-和 x+以及 y-和 y+。

69820

基于 Roslyn 同时为 Visual Studio 插件和 NuGet 包开发 .NETC# 源代码分析器 Analyzer 和修改器 CodeFixProvider

本文将基于 Roslyn 开发一个 C# 代码分析器,你不止可以将分析器作为 Visual Studio 代码分析和重构插件发布,还可以作为 NuGet 包发布。...不管哪一种,都可以让我们编写的 C# 代码分析器工作起来并真正起到代码建议和重构的作用。...无论哪一种,你都可以支持 Roslyn 分析器扩展的 IDE(如 Visual Studio)获得如下面动图所展示的效果。...在这里返回,可以为那里分析器找到的代码提供修改建议 override GetFixAllProvider 最简单的示例,我们将仅仅返回 BatchFixer,其他种类的 FixAllProvider...我将通过其他博客进行说明 override RegisterCodeFixesAsync FixableDiagnosticIds 属性我们返回的那些诊断建议这个方法可以拿到,于是为每一个返回的诊断建议注册一个代码修改器

35320

Roslyn 入门:使用 .NET Core 版本的 Roslyn 编译并执行跨平台的静态的源码

我曾经 生成代码 T 到 T1, T2, Tn —— 自动生成多个类型的泛型 一文中提到过这样的想法,在这篇文章,我希望只编写泛型的一个参数的版本 Demo,然后自动生成 2~16 个参数的版本...于是,我想到可以使用 Roslyn项目中编写一段转换代码,我们使用通用的方式去编译和执行这段代码,以便完成各种各样日益增加的类型转换需求。...准备工作 与之前 Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码 的不同,我们这次无需打开解决方案或者项目,而是直接寻找并编译源代码文件。...准备一份用于编译和执行代码文件 我直接使用 生成代码 T 到 T1, T2, Tn —— 自动生成多个类型的泛型 这篇文章的例子。把其中最关键的文件拿来用于编译和生成试验。...Program { static void Main(string[] args) { // 大家都知道代码写死文件路径是不对的,不过

1.2K10

关于Visual Studio 2019的前期详情

Montgomery 表示,之所以选择在这个时间点公开这个消息,是因为微软准备 GitHub 上公开可见的项目(包括 .NET 和 Roslyn)中提交与新一代 VS 发布相关的内容。...\\ 公告并没有提到 VS2019 具体会带来哪些新功能,不过,Montgomery 还是提到了新版本的几个关注点: \\ 更丰富的代码重构功能\\t 更佳的导航体验(假定他指的是 IDE 的导航...VS2017 2017年3月正式发布,它在2016年内推出了几个预览版本。不难想象,VS2019的第一个预览版本应当会在今年夏末秋初之季推出。...幸运的是,VS2019 的设计目标之一是能够与目前的 VS2017版本 同时安装,所以 VS2019推出时,开发者就能够更方便地尝鲜了。...开发者对此新闻的反响来看,他们对于 VS2017 中一些尚未得到解决的错误和代码质量问题仍然有所担忧,认为目前切换到 VS2019 还不到时机。

92310

苏州 开源自主的 dotnet 生态

本文仅仅只是用来2020苏州开发者大会上的素材,开发者大会成功完成,本文也可以公开 编程语言版权,到编译器到运行时的开源,和允许自己分发和构建 咱写下的 C# 代码,到机器上运行的应用,有多少个步骤是咱可以自主的... dotnet 里面,将使用开源的基于 MIT 协议的 Roslyn 编译器,将 C# 代码编译为 IL 文件。...咱接下来聊聊 dotnet 开源的自主可控方面。咱写下的 C# 代码,到机器上运行的应用,有多少个步骤是咱可以自主的?【停顿一下,聚拢一下注意力】尽管答案大家都知道,那就是完全开源完全可控。... 2020 年,其实自己基于开源的 Roslyn 定制一个属于自己的编译器没有想象那么难,而 Roslyn 编译器的开源协议是最友好的 MIT 协议,这意味着咱可以对整个开源仓库进行自由的更改 (这将允许任何人任何组织和企业任意处置...,以及后续无法维护问题) (以上内容的细节请看 dotnet Roslyn 编译器到 dotnet runtime 运行时的构建_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili) 使用 Roslyn

94420

提高使用 Visual Studio 开发效率的键盘快捷键

它的功能是“快速操作和重构”。你几乎可以在任何代码上使用这个快捷键来快速修改你的代码。 比如修改命名空间: 图片 比如提取常量或变量: 比如添加参数判空代码: 还有更多功能都可以使用此快捷键。...而且因为 Roslyn 优秀的 API,有更多扩展可以使用此快捷键生效,详见:基于 Roslyn 同时为 Visual Studio 插件和 NuGet 包开发 .NET/C# 源代码分析器 Analyzer...Ctrl + O 查找当前文件的所有成员(只搜一个文件,这可以大大提高命中率) Ctrl + T 转到符号(只搜类型名称、成员名称) Ctrl + G 查找当前文件的行号(比如你代码审查中看到一行有问题的代码...,得知行号,可以迅速跳转到这一行) 重构 重命名 F2 图片 如果你一个标识符上直接重新输入改了名字,也可以通过 Ctrl + ....图片 另外,还有个任务列表,跟书签列表差不多的功能: Ctrl + K, Ctrl + H 将当前代码加入到任务列表或者列表删除(效果类似编写 // TODO) 图片 显示 Ctrl + R

29620

Succinctly 中文系列教程(二) 20220109 更新

Succinctly .NET 本地化教程 零、简介 一、本地化开始 二、日期和时间 三、周数 四、时区 五、数字 六、货币 七、文本 八、附录 Succinctly Linux 教程 一、简介...二、变量和字符串 三、数字、数学和注释 四、布尔和条件语句 五、函数 六、列表 七、字典 八、元组 九、文件输入输出 十、模块 十一、总结 Succinctly R 教程 零、简介 零、前言 一、...六、代码检查工具 七、代码重构工具 八、单元测试工具 九、架构工具 十、扩展 Reshaper 十一、ReSharper V9 十二、这是终点吗?...Succinctly Roslyn 教程 零、简介 一、Roslyn 项目:.NET 编译器平台 二、Visual Studio 2015 的编码:Roslyn 驱动的体验 三、穿越 Roslyn:...架构、API、语法 四、编写代码分析器 五、代码重构 六、向 NuGet 部署分析器 七、将分析器和重构部署到 Visual Studio 图库 八、工作区,代码生成,发出 Succinctly SciPy

5.9K20

微软将发布Visual Studio 2019,提供基于AI功能的协助

上个月,Build 2018开发者大会上,微软展示了两个新的Visual Studio预览:IntelliCode和Live Share。...前者使用AI来提供改进代码质量和工作效率的智能建议,后者可让开发人员与团队成员进行实时协作,这些团队成员可以直接Visual Studio和Visual Studio Code进行编辑和调试。...我们所了解的只是一个名字和大概确认发布的时间,一些关于改进的提示,以及确认了将会有更多AI功能: 微软称,“由于开发者工具团队(特别是.NET和RoslynGitHub做了很多工作,我们现在处于Visual...我们期待更多更好的重构,更好的导航,调试器更多的功能,更快构建解决方案。...但也希望我们继续探索像Live Share这样的连接功能,如何让开发人员能够实时全球进行协作,以及如何让云场景像在线源代码库更加无缝。

78270
领券