16

私は C# プロジェクトで ReSharper を使用していますが、一般的に気に入っています。ただし、特定のリファクタリング アクションを実行すると、コードに注釈が追加され続けます。

たとえば[NotNull]、「Check parameter for null」コンテキスト アクションを使用すると、次のように追加されます。

// Before context action
public void Foo(object input)
{
}

// After context action
public void Foo([NotNull] object input)
{
    if (input == null)
    {
        throw new ArgumentNullException("input");
    }
}

using JetBrains.Annotationsさらに、属性が定義されている JetBrains アセンブリを参照していなくても、ReSharper はファイルに追加します。

コンテキスト アクションは非常に便利なので引き続き使用したいと思いますが、コードに外部注釈を導入することはできません。ReSharper は、デフォルトのアノテーション名前空間を変更し、アノテーション属性のソース コードをプロジェクトにコピーするオプションを提供しますが、それもこのプロジェクトのオプションではありません。

ReSharper に注釈の追加を完全に停止するように指示する方法はありますか? コード注釈属性を持つ名前空間として JetBrains.Annotations のチェックを外してオプションを試してみましたが、最初に注釈が生成されるかどうかには影響がないようです。

更新:実際には JetBrains.Annotations.dll を参照していませんでしたが、同じ JetBrains.Annotations 名前空間で同じ注釈属性を再実装した別の DLL を参照していました。その DLL 参照を削除すると、ReSharper が注釈を追加できなくなります。これをオフにするオプションがまだあればいいのですが、回避策はこの状況に適しています。

4

1 に答える 1

6

JetBrains.Annotations.dll を参照すると、「null のパラメーターをチェック」のデフォルト アクションは、NotNull属性を使用するようです (「'NotNullAttribute' で注釈を付ける」オプションを追加しているにもかかわらず)。

私が知っている唯一の回避策は、参照しないことですJetBrains.Annotations.dll

アップデート:

[NotNull]これを詳しく調べてみると、注釈 dll が含まれており、"Check parameter for null" が要求されたときに追加される提案/バグがあったようです : http://youtrack.jetbrains.com/issue/RSRP-70350他の誰かがこれに遭遇し、その理由を不思議に思っています...

于 2013-03-18T22:53:12.177 に答える