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

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

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

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

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

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

    15420

    .Net 编译器平台 --- Roslyn

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

    33930

    C# 一分钟浅谈:Roslyn 编译器平台介绍

    引言 在现代软件开发中,编译器不仅仅是将源代码转换为目标代码的工具,它还承担着更多职责,如代码分析、重构建议和错误检测等。...高级应用:代码生成和修改 Roslyn 不仅可以解析和分析代码,还可以生成和修改代码。...在使用语义模型时,确保你已经正确地设置了编译上下文。例如,如果你在一个项目中使用语义模型,你需要加载项目的引用和编译选项。...结论 Roslyn 编译器平台为 C# 和 VB.NET 开发者提供了强大的工具,不仅可以解析和分析代码,还可以生成和修改代码。...通过本文的介绍,希望你对 Roslyn 有了更深入的了解,并能够在实际项目中应用这些知识。无论是进行代码分析、重构还是生成代码,Roslyn 都是一个值得探索的强大工具。

    32410

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

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

    1K51

    .NET Roslyn快速上手指南

    Roslyn简介 Roslyn是C#和Visual Basic编译器的开源实现,具有用于构建代码分析工具的API表面。Roslyn还提供可供IDE使用的语言服务,例如重构、代码修复或编辑并继续。...Roslyn分析器 Roslyn 分析器允许您使用 Roslyn 中的数据来检查代码以检测问题。分析器可以直接在编辑器中添加错误、警告或波浪线。...// 将类名转换为全大写 var newName = identifierToken.Text.ToUpperInvariant(); // 获取语义模型,用来理解代码中的符号和上下文...通过分析我们会发现,表达式树解析是从右往左解析的,举例:Add(1)—>Empty—>ImmutableArray—>ImmutableArray 所以我们要锁定这一行的代码的话,首先我们会判断它有一个...对应的代码如下: // 无法将表达式转换成成员、方法、属性的去掉 // 一般找都是从右往左去找 if (!

    14010

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

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

    92770

    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.3K80

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

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

    2.4K30

    从零开始学习 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

    42640

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

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

    1.8K10

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

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

    73020

    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.4K10

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

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

    77330

    关于Visual Studio 2019的前期详情

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

    95510

    苏州 开源自主的 dotnet 生态

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

    97720

    提高使用 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

    43620
    领券