在类成员声明之间添加空行的格式规则

28
Micrsoft提供了一堆用于EditorConfig的编码设置。 EditorConfig的.NET编码规则设置 但是找不到一种方法来创建一个规则,建议开发人员在类成员声明之间添加空行。
// "Bad" style
public class Order
{
    private readonly IRepository _repository;
    private readonly IPriceCalculator _priceCalculator;
    public Order(IRepository repository, IPriceCalculator priceCalculator)
    {
        _repostitory = repository;
        _priceCalculator = priceCalculator;
    }
    public CopyFrom(Order originalOrder)
    {
        // Create new order
    }
    public Cancel(Customer customer)
    {
        // Cancel order
    }
}

// Good style
public class Order
{
    private readonly IRepository _repository;

    private readonly IPriceCalculator _priceCalculator;

    public Order(IRepository repository, IPriceCalculator priceCalculator)
    {
        _repostitory = repository;
        _priceCalculator = priceCalculator;
    }

    public CopyFrom(Order originalOrder)
    {
        // Create new order
    }

    public Cancel(Customer customer)
    {
        // Cancel order
    }
}

你可以创建一个 DiagnosticAnalyzer + CodeFixProvider - Reza Aghaei
这样的格式选项从未存在过。最基本的问题是它需要一个解析器,但编辑器使用的是词法分析器。由于在花括号语言中无法很好地处理语法错误,因此解析器很难正确实现。当你忙于输入代码时,总会有很多这样的错误。Resharper往往是标准建议,但我也没有看到它尝试解决这个问题。 - Hans Passant
1个回答

13
Visual Studio的.NET编码规范设置 EditorConfig没有提供这个代码样式设置,而EditorConfig本身也没有。
因此,仅使用EditorConfig,无法创建这样的规则。
您可以考虑使用StyleCop。
StyleCop最初由Microsoft开发。该工具实现了Microsoft为C#语言定义的代码风格指南。现在,该工具作为开源项目继续开发。 StyleCop可用作代码分析器(例如通过此NuGet软件包),因此您甚至可以独立为您的项目和解决方案配置它。当然,您可以将配置存储在存储库中,以同步所有开发人员的设置。配置存储在.ruleset文件中,该文件格式受Visual Studio原生支持。
您还可以将StyleCop用作Visual Studio扩展程序(StyleCop Classic),但我不建议这样做。
对于您的用例,规则SA1513很有趣。 原因
C#元素、语句或表达式中的右括号后面没有空行。

通常,在StyleCop中有许多规则可以提高代码的可读性和结构。您可以自由选择适合您需求的规则。


4
现在(2022年7月)还是不可能做到吗? - Rwing
只是作为一个补充:不再使用规则集,因为StyleCop.Analyzers现在也支持.editorconfig。所以规则应该是dotnet_diagnostic.SA1513.severity = warning - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接