2013-12-16 4 views
13

Visual StudioのResharperから、私が働いているC#プロジェクトで警告が出されていることについて、簡単な質問があります。警告は次のとおりです。Resharperの警告「純粋なメソッドの戻り値が使用されていません」


を「純粋なメソッドの戻り値が使用されていない」


これが起こっている方法は以下の通りです:

private static bool FilePathHasInvalidChars(string userInputPath) 
    { 
     try 
     { 
      Path.GetFullPath(userInputPath);//this is where the warning appears 

     } 
     catch (Exception e) 
     { 
      Log.Error(String.Format(
       "The Program failed to run due to invalid characters or empty string value for the Input Directory. Full Path : <{0}>. Error Message : {1}.", 
       userInputPath, e.Message), e); 
      return true; 

     } 
     return false; 
    } 

私はなぜ知っていると思います警告が発生しています。 私はPath.GetFullPath(path)を使用して、無効な文字で行うすべての例外をキャッチします。パスはユーザーによって入力として提供されるため、実際には(Path.GetFullPath(userInputPath))の結果は使用しません。私はそれが持っている唯一の使用は、私がこのメソッドのために持っているチェックが、提供されたパスが空でないか、無効な文字がないことを確認するためにメインメソッドで行うチェックです。

Iは、上記の方法を使用する場所は以下の通りである:

if (FilePathHasInvalidChars(inputDirectory)) 
     { 
      return; 
     } 

プログラムは、無効なパラメータを使用して実行を開始する前に、基本的には、出口点をisjust。 この警告によって問題が発生した場合、または今後Path.GetFullPathメソッドを使用して問題が発生する場合は、私は迷っていましたか?

多くのおかげで、 Jetnor。

答えて

18

これは実際にどのように使用したいのですか?いいえ、問題はありません。

この場合のResharperヒントは、フェッチしたデータを保持する変数を作成するのを忘れた場合のポインタに過ぎません。あなたが検証しているだけで、実際にそのデータは必要ないので、あなたはうまくいくはずです。

編集:あなたはヒントを避けるため、そしてそれを明確に、これは、このように、特定のReSharperのコメントを使用することにより目的上にあることを確認することができ注:

// ReSharper disable once ReturnValueOfPureMethodIsNotUsed 
Path.GetFullPath(userInputPath); 

編集#2 :SynerCoder is probably right though、約System.IO.Directory.Exists()は、あなたの特定の目的に適したオプションです。

+0

おかげKjartanを。ちょうどそれが大丈夫であることを確かめたいと思った。私はこの場合警告を無視する。 :D – Jetnor

5

パスが不正かどうかをチェックするメソッド。 ArgumentExceptionSecurityExceptionArgumentNullExceptionNotSupportedExceptionPathTooLongException、しかし:あなたは、次のいずれかにすることができたExceptionをキャッチし、あなたのサンプルコードでは

if (!System.IO.Directory.Exists(inputDirectory)) 
{ 
    return; 
} 
+2

私はそれを行うことができます。なぜなら、このメソッドを使用して存在しないが、Directory.CreateDirectoryを介して作成された別のパスを検証するためです。これは、ユーザーが提供するパスで複数の問題をチェックするのに適した方法です。 – Jetnor

7

:あなたはディレクトリ(inputDirectory)をチェックしているので、次のコードを使用する必要がありますパスに無効な文字が含まれている場合にスローされるのはArgumentExceptionMSDNです。
さらに、

私はパスを使用しています。GetFullPath(path)は、無効な文字で行うすべての例外をキャッチする目的でのみ使用します。

するのではなく、次のコードを使用し、例外処理を省略すべきである:

foreach (char invalidChar in Path.GetInvalidPathChars()) 
{ 
    if (userInputPath.Contains(invalidChar)) 
    { 
     return true; 
    } 
} 
return false; 
+0

こんにちは。入力いただきありがとうございます。もともと私のコードはcatch(ArgumentException)でした。しかし、私がPath.GetFullPathがあなたが言及した他のすべての例外を作り出したことを知った後、私はそれらも捕まえることにしました。ユーザーが空の文字列を提供した場合、またはユーザーが許可されていない場所で何かをやりたければ、この方法で早くキャッ​​チすることができます。 :) – Jetnor

+0

ユリとの合意。私はちょうどYuriyの関数コードの短縮形を考えました: 'return userInputPath.IndexOfAny(Path.GetInvalidPathChars())> = 0?真:偽 – RBT

関連する問題