在构建/保存和提交时设置 C# editorconfig 代码清理

Posted

技术标签:

【中文标题】在构建/保存和提交时设置 C# editorconfig 代码清理【英文标题】:Setting up C# editorconfig Code Cleanup on build/save and commit 【发布时间】:2019-08-20 04:20:08 【问题描述】:

我们的团队希望在我们的 C# 项目中强制执行样式规则。我在某处读到微软说过“.editorconfig 是未来”,所以我们想使用它。注意:我们不想使用 ReSharper。

C# 现在有很多很棒的规则可以在 editorconfig 中定义,见Microsofts own editorconfig guide

我们想使用它,并强制在 Visual Studio 中编码时遵循编辑器配置中设置的规则,并强制提交给 git 的代码遵循规则。

当添加 .editorconfig 规则时,我们的文件会得到很好的 linting,如下所示:

在 Visual Studio 2019 中运行完全启用的“代码清理”,它会根据需要完全格式化我们的代码:

问题 1:如何让“运行代码清理”在保存/构建时自动运行?即使我们将某些规则设置为严重性 ":error",编译器仍然不会在构建时抱怨 C# 文件中的问题。

注意:我已经尝试了名为 Format document on Save 的 Visual Studio 插件,但它不遵循 editorconfig 中设置的所有规则(只有少数,比如修复制表符/空格和文件结尾换行符)

我们还想确保对我们的 git 存储库的所有提交都进行格式化。

有一个名为dotnet-format 的工具应该根据editorconfig 规则来格式化代码。

我们想添加一个运行以下 2 个命令的预提交挂钩:

dotnet tool install -g dotnet-format
dotnet-format

这可以正常工作,但问题是 dotnet-format 也不能​​修复代码给出严重性“:错误”的文件中的问题。

dotnet-format 的行为方式与“保存时格式化文档”的行为方式相同,只是修复了一些问题,例如制表符/空格和文件换行符结尾。

编辑:dotnet-format 现在似乎只支持一些规则,根据他们的Wiki

问题 2:我们如何从命令行运行与 Visual Studio 2019 中的“代码清理”命令行为方式相同的命令?

【问题讨论】:

欢迎来到 SO!请,即使问题之间有任何关系,也尽量不要一次问多个问题。在这种情况下,没有直接关系,所以请分成 2 个不同的问题。 如果您对如何在构建中运行清理感兴趣:medium.com/c-sharp-progarmming/… 【参考方案1】:

我只能回答你的第一个问题:

我一直在寻找这个,我找到了一个名为 Code Cleanup on Save 的扩展程序,您只需安装它并在 Tool->Options->Code Clean up on Save 中配置它,决定您想要的配置文件设置,仅此而已, 希望对你有帮助!

【讨论】:

欢迎来到 SO!这是原始问题的问题(应该只有一个),已经注意到了。

以上是关于在构建/保存和提交时设置 C# editorconfig 代码清理的主要内容,如果未能解决你的问题,请参考以下文章

在编辑节点 (C#) 时为 TreeView 提交更改很热?

如何在 C# 运行时保存多个用户设置

如何配置 Visual Studio 代码以在保存时提交到 git?

博客应用程序在提交表单时未将属性保存到数据库

在构建时将 C++ 结构转换为 C# 结构

在 C# 中使用设置类