15

ReSharper 7.1.1コード検査は、ソースツリー内のフォルダーに直接対応していないURLに関係する場合<location>、ファイル内の要素が冗長であると誤って報告します。web.configASP.NETMVCまたはWebAPIを使用している場合、通常、特定の物理フォルダーに直接対応しないURLパスがあります。

ソリューション全体の検査を実行すると、2つの警告が表示され、そのうちの1つを無効にすることはできましたが、2つ目を無効にする方法がわかりません。

1つ目は、「冗長ロケーション要素」の警告です。ReSharperはロケーションセクション全体をフェードアウトします。フェードアウトするものの例を次に示します。

<location path="FederationMetadata">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

ACS経由でフェデレーションログインを使用していて、そのためのメタデータエンドポイントを提供する場合は、この構成が必要です。ただし、この名前の対応するパスはありません。

(厳密に言えば、これはMVCまたはWeb APIとは関係ありません。非常に一般的な例であるため、この例を示しました。ただし、私のプロジェクトには、<location>MVCおよびWeb APIルーティング構成で処理されるパスに対応する要素もいくつかあり、それらには同じ問題。根本的な原因は同じようです。ReSharperはプロジェクト内のこの場所に対応するものを何も見ることができないため、間違っていると誤って結論付けます。MVCとWeb APIコントローラー、およびその他のパスに影響します。モジュールのようなもののために利用可能です。)

この最初の警告を取り除くのは簡単です。検査の重大度の設定でオフにすることができます。

次に、2番目の警告が表示されます:「ロケーション要素は使用されていません:FederationMetadataにプロジェクトアイテムが見つかりません」(および対応する<location>要素を持つ各コントローラーに対する同様の警告)。

これは、ソリューション全体を検査するときに表示される[検査結果]パネルにのみ表示されます。ソースファイル自体を見ると、通常の検査ウィジェットは表示されません。そして奇妙なことに、これには無効にするオプションがないようです。

右クリックして[非表示...]を選択できることは知っていますが(これは「冗長な場所」の問題であると思われますが、設定ですでに無効にしています)、私が知る限り、検査結果を非表示にすることは私のマシンにローカルです。この警告がどこにも表示されないように、チーム共有ドット設定を構成したいと思います。

各ユーザーに結果を隠さずに、すべてのユーザーのクリーンな検査結果を目指しています。Resharperは、この問題を誤って報告しています。これは問題ありませんweb.config。R#が誤解しているだけです。この2番目の警告を消す方法を誰かが知っていますか?(または、より良いことに、これらの「隠された」場所が実際に存在することをR#が認識できるようにする方法はありますか?)

4

3 に答える 3

10

私はこれを追加しました:

  <!-- ReSharper disable WebConfig.RedundantLocationTag -->
  <!-- ReSharper disable WebConfig.WebConfigPathWarning -->
  <location path="api">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
  <!-- ReSharper restore WebConfig.RedundantLocationTag -->
  <!-- ReSharper restore WebConfig.WebConfigPathWarning -->
于 2014-07-09T19:34:43.470 に答える
1

R#設定を変更して、マシンに対してローカルにならないようにすることができます。

  1. VSでは、RESHARPERメニューをクリックしてから、Manage Options...
  2. アイテムをダブルクリックしteam-sharedます(との間の真ん中のアイテムである必要がありますThis computerpersonal

ここで設定を変更すると[ProjectName].csproj.DotSettings、プロジェクトにファイルが作成されます。このファイルをソース管理にチェックインすると、設定はプロジェクトで開発する他のR#ユーザーと共有されます。AFAIK、変更可能な設定(たとえば、検査の重大度をデフォルトとは異なるものにする必要があることをR#に通知する)であれば、チーム共有設定に追加できるはずです。

web.configエラーについては、R#を有効にすると、web.configファイルとapp.configファイルのインテリセンスが失われるため、さらに大きなビーフがあります。次の方法でエラーを無視するようにR#に指示できる場合がありますが、web.configファイルのすべてのR#の問題を無視するため、探している解決策かどうかはわかりません。

  1. ダブルクリックしてteam-shared設定を編集した後(上記)、左側のメニューのSettings下にある項目をクリックします。Code Inspection
  2. をクリックしEdit Items to Skip buttonます。
  3. の下Files and folders to skip when analysingで、をクリックしますAdd File...
  4. web.configファイルに移動して追加します。

これは、分析時にweb.configファイル全体を無視するようにR#に指示します。繰り返しますが、これがあなたが望む解決策であるかどうかはわかりませんが、あなたが見ている誤った提案を抑制するために働くかもしれません。

更新(コメントへの返信)

実際、VSコンテキストメニューから検査オプションを変更できます。Inspection Optionsダイアログにラジオボタン(Do not show- Error)が表示されると、ボタンがありSave Toます。それをクリックして、設定をチーム共有のDotSettingsに保存します。

于 2013-03-27T12:06:10.740 に答える
0

これには2つの要素があるようです。

  1. Webパスの構成は、両方のエラーに対処するための最良の方法です
  2. どうやら、設定をDotSettings.userファイルから共有チームファイルに手動で移動する必要があります

問題のあるパス属性をクリックして(属性値にキャレットを入れて)、R#ポップアップが表示されるのを待つと、そのメニューに「パスマッピング」を作成する方法、または既存のマッピングを編集する方法が表示されます。サイト。これを使用して、パスに対応する実際のファイルがどこにあるかをR#に通知できます。または、この場合はそのようなファイルがないため、このパスのアクションを[無視]に設定するだけです。

これを行うと、上記の警告はどちらも表示されなくなります。

残念ながら、[パスマッピング]ダイアログは([問題のフィルター]ダイアログのように)[保存]ボタンのみがあり、[保存先]ボタンがないものの1つであり、設定の移動先を制御できません。実際には、それらは<project>.DotSettings.userWebプロジェクトのファイルに含まれるように見えます。

ただし、そのファイルをテキストエディターで開き、そこから設定を切り取って、チーム共有ソリューション設定に貼り付けると、ファイルだけで機能することがわかります。これは、プロジェクトのすべての人に当てはまる方法で、両方の警告を取り除くように見えます。

(「フィルターの問題」設定にも同様のトリックを使用できるはずですが、別の場所を調べる必要があります。これらはグローバル設定になりますが、[オプションの管理]ダイアログを使用してエクスポートしてからエクスポートできます。エクスポートした設定を開いて、チーム共有ソリューション設定にコピーできます。)

于 2013-08-12T11:34:44.460 に答える