2012-04-20 12 views
3

私はResharperが大好きですが、BCL型の組み込みの注釈が間違っているために、誤った警告が表示されることがあります。たとえば、このコードで:Resharperの注釈を間違って「修正」できますか?

private static string GetDescription(T value) 
{ 
    Type type = typeof(T); 
    string name = Enum.GetName(type, value); 
    if (name != null) 
    { 
     ... 

それは私if声明に警告を与える:「式は常に真です」。しかしEnum.GetNameがnullを返すことができます。

string name = Enum.GetName(typeof(DayOfWeek), (DayOfWeek)42); // null 

私はEnum.GetNameため[NotNull]注釈があるため、これがあると仮定します。それを修正する方法はありますか?私は警告を受け取りません。

注:Resharper 5.1を使用しています。おそらくその問題はバージョン6で修正されていますが、私は今アップグレードするつもりはありません。

+0

問題は、ReSharper 6.1でも引き続き発生します。 –

+1

@ JohnSaunders、本当ですか?彼らのバグトラッカーによると、[固定されているはずです](http://youtrack.jetbrains.com/issue/RSRP-256926)... –

+0

@JohnSaunders、私が解決策を見つけました。回答) –

答えて

6

[OK]を取得しました。ビルトイン注釈は、Resharperインストールディレクトリ(私のマシンのC:\Program Files (x86)\JetBrains\ReSharper\v5.1\Bin\ExternalAnnotations\)のXMLファイルで定義されています。解決策は、不適切な注釈を削除または修正するために適切なファイルを編集することです。

Enum.GetNameの場合、変更するファイルはmscorlib\mscorlib.[version].Contracts.xmlです。私はこの注釈コメント:

<member name="M:System.Enum.GetName(System.Type,System.Object)"> 
    <attribute ctor="M:JetBrains.Annotations.NotNullAttribute.#ctor" /> 
    </member> 

をとVisual Studioを再起動し、現在の警告はトーマスの答えに

+0

問題が修正されたことを示すために問題を更新しました。回避策を示すために更新することができます。 –

+0

@JohnSaunders、私はやった –

1

ちょうど更新:)なくなって、彼らはここ数年で周りのものを移動しているように見えます。 ReSharperの8.2.3、上記のファイルについては

は今にありますので、

C:\Users\YOUR_USER_NAME\AppData\Local\JetBrains\ReSharper\vAny\packages\ReSharper.ExternalAnnotations.8.2.3001\ReSharper\vAny\annotations\.NETFramework\mscorlib\...

あなたがいることをやろうとしている場合、あなたは非mscorlibのために、そのパス(または1つのアップを検索することができますファイル)。

関連する問題