28

是否有一个漂亮的 C# 打印机/代码格式化程序(作为构建系统的一部分)?读作:“生活在 Visual Studio 之外”。对于 Java、C++/C、Go 来说似乎有很多这样的东西——所以 C# 还应该有一些位于 IDE 之外的代码格式化程序似乎是非常合理的?

(我实际上想将格式化程序与 StyleCop 之类的东西结合起来,并让开发人员在提交之前将其作为流程的一部分运行)。

注意:不是语法高亮,如网页中的代码。取而代之的是Code beautifier或代码漂亮的打印机,它将获取代码并将其格式化为样式/标准编码格式...... StyleCop 会进行样式检查以查看代码是否符合格式。

4

8 回答 8

8

JetBrains 还制作了一个名为CleanupCode的免费命令行工具,它可以根据.editorconfig设置格式化 c#。我为它编写了一个名为ReGitLint的包装实用程序,它可以更轻松、更快速地作为预提交挂钩或在构建服务器上运行。如果您的队友使用 Visual Studio Code 而 ReSharper 不是一个选项,这会很有帮助。

要起床,只需运行以下命令

dotnet tool install JetBrains.ReSharper.GlobalTools
dotnet tool install ReGitLint

然后将以下内容添加到 .git/hooks/pre-commit

#!/bin/sh
dotnet regitlint -f staged --fail-on-diff

要在 jenkins 上强制格式化,请将其添加到您的构建脚本中

dotnet tool restore
dotnet regitlint --jenkins

有关更多选项,请查看自述文件

于 2020-06-12T17:09:37.130 回答
3

首先想到的是ReSharper。但是,它是 VS 的一个插件,这不是您所要求的。我不确定您是否可以将其设置为保存时自动格式化。

从他们的网站

ReSharper 可以根据您的代码样式首选项,重新格式化任意选定的代码块、当前文件中的所有代码、目录中的所有文件,甚至整个项目或解决方案中的所有代码。ReSharper 为 C#、VB.NET、JavaScript、CSS 和 XML 代码提供了不同的格式化选项。重新格式化会影响大括号布局、空行、换行和换行、各种上下文中的空格、缩进、对齐多个结构,以及您可以在 ReSharper 选项对话框中微调的更多选项。

于 2012-10-26T17:03:25.923 回答
3

对于 .NET SDK 项目,可以使用dotnet format 命令。

dotnet 格式是一种代码格式化程序,可将样式首选项应用于项目或解决方案。首选项将从.editorconfig文件中读取(如果存在),否则将使用一组默认首选项。

如果项目不导入 .NET SDK 上不可用的内容(例如文本模板化 msbuild 目标),它也可能适用于经典 .NET Framework 项目。

dotnet 格式源存储库位于GitHub dotnet/format 上

这些.editorconfig规则已记录在案,并且可以从 Visual Studio 中导出,也可供 Visual Studio 使用。

于 2021-08-30T09:31:56.907 回答
2

终于有了;夏皮尔

它最初是从流行的Prettier移植而来的,它只是C# 的代码格式化程序。它可以从命令行运行,并且不依赖于 IDE 或扩展,尽管也存在对这些的支持。你可以让它作为 git-hook 的一部分运行,例如在 git commit 上自动格式化更改的文件。

与其他格式化工具相比,选择 Csharpier 的一些好处是:

  • 与大多数格式化程序(例如dotnet-format)不同,它会中断长行
  • 它不保留原始格式。阅读Prettier 网页上的构建和执行样式指南部分可能最好地解释这种好处。
于 2022-02-28T10:00:10.160 回答
1

如果您有关于空格和大括号放置的现有且不寻常的样式指南,AStyle可能足够灵活以匹配它。AStyle 不是特定于 C# 的,它可以执行许多类似 c 的语言。

如果NArrange恰好符合您的风格准则,它也很好。它可以更具侵略性,例如它可以将您的部分类放入不同的区域并对您的方法进行排序。

于 2015-04-29T17:09:52.077 回答
1

Microsoft 有一个代码格式化工具,它使用 Roslyn 根据他们的指南自动重写源代码。请检查该链接 https://github.com/dotnet/codeformatter

于 2021-04-28T21:04:01.190 回答
0

更新:NArrange 不再开发(另请参阅https://github.com/MarcStan/narrange以获得稍新的分叉)。


要在构建期间自动化代码格式化(一种微重构),您需要一个可以从命令行运行的工具(并且您可以轻松地集成到 msbuild 中)。

如果您的需要不是太高级(作者将其定义为 beautifier ),一个很好的选择NArrange。它完全支持 Framework 2.0 的 C# 和 VB.NET,但也支持新语言版本的许多广泛使用的功能。

NArrange 是一个 .NET 代码美化器,可自动组织 .NET 类中的代码成员和元素。

于 2012-10-26T17:08:28.873 回答
0

您现在可以使用https://www.npmjs.com/package/narrange来利用 node.js 的强大功能 超级简单、可配置的设置 :)

const { createNArrange } = require("narrange");
const path = require("path");

createNArrange({
  srcPath: path.join(__dirname, "src/apps/mango"),
  configFilePath: path.join(__dirname, "config/NArrange.xml")
});
于 2019-03-12T12:18:23.653 回答