📌

foreach 文から LINQ 式への変換を推奨する ReSharper の Hint を .editorconfig で無効化する

2024/04/20に公開

はじめに

private static bool HasConstructorWithPreserveAttribute(INamedTypeSymbol type)
{
    foreach (var constructor in type.Constructors)
    {
        foreach (var attribute in constructor.GetAttributes())
        {
            if (attribute.AttributeClass.IsPreserveAttribute())
            {
                return true;
            }
        }
    }
    return false;
}

上記のような C# のコードを Rider 上で記述すると、以下のように foreach のループを LINQ を使った式に変換する提案がなされます。

image_0

そして Context Action に表示される「Convert into LINQ-Expression」を実行すると以下のようにコードが変換されます。

private static bool HasConstructorWithPreserveAttribute(INamedTypeSymbol type)
{
    return type.Constructors.SelectMany(constructor => constructor.GetAttributes()).Any(attribute => attribute.AttributeClass.IsPreserveAttribute());
}

どちらの方が良いかは置いておいて、この ReSharper からの Hint が表示されなくなるような .editorconfig の記述方法を紹介します。

方法

以下のように C# のコードを対象に resharper_foreach_can_be_converted_to_query_using_another_get_enumerator_highlightingnone に設定するだけで実現できます。

[*.cs]
resharper_foreach_can_be_converted_to_query_using_another_get_enumerator_highlighting = none

参考

GitHubで編集を提案

Discussion