3

私は Resharper が大好きですが、おそらく BCL 型の組み込みの注釈が間違っているために、間違った警告が表示されることがあります。たとえば、このコードでは:

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

if「式は常に真です」というステートメントに関する警告が表示されます。ただし、Enum.GetNamenull を返すことができます。

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

これは、 の[NotNull]注釈があるためだと思いEnum.GetNameます。警告が表示されないように修正する方法はありますか?

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

4

2 に答える 2

6

はい、分かりました。組み込みの注釈は、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を再起動すると、警告がなくなりました:)

于 2012-04-21T00:04:45.503 に答える
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ファイル以外のパス) を検索できます。

于 2014-11-13T21:46:41.890 に答える