10

私のコードには、「m_d3dDevice」という名前の変数が含まれています。

StyleCop はこの名前について文句を言います:

SA1305: 変数名 'm_d3dDevice' は、ハンガリー表記のようなプレフィックスで始まります。プレフィックスを削除するか、許可されたプレフィックスのリストに追加してください。

(SA1308 ("m_") を手動で無効にしたことに注意してください。これは、従わなくても構わないと思っている数少ないルールの 1 つです。)

ハンガリー語タブで「d3d」を例外として許可することはできません。1 つまたは 2 つの文字プレフィックスしか許可されず、「d3」を許可しても役に立たなかったからです。「d3d」を CustomDictionary ファイルに追加するために考えられるすべてのことを試しました (とにかく、ドキュメントは CustomDict がルール 1305 に使用されていないことを暗示しています)。

StyleCopでこれを許可するための提案はありますか? 私の変数をF2する必要がないことは、今では誇りの問題です。

4

4 に答える 4

12

ケースバイケースで stylecop を抑制することもできます。例えば

[System.Diagnostics.CodeAnalysis.SuppressMessage(
    "Microsoft.StyleCop.CSharp.NamingRules",
    "SA1305:FieldNamesMustNotUseHungarianNotation",
    Justification = "Using Win32 naming for consistency.")]
IntPtr hFile;

問題のある名前が多数ある場合、これは魅力的なオプションではないかもしれませんが、1 つまたは 2 つの場合は、通常は問題ありません。

于 2013-04-24T17:38:16.093 に答える
7

StyleCop+をご覧ください。名前チェックを無効にする代わりに、すべてのプライベートフィールドに「m_」(または任意の名前)で始まる名前を強制的に付けることができる柔軟な命名規則が含まれています(あなたがしたように)。

「d3dDevice」に関しては、非常に興味深いケースです。論理的には、{ "d", "3", "d", "Device" } または { "d3", "d", "Device" } という単語に分割されます。そして二番目の「d」は「camelNotation」に従わないようです。

しかし、静的分析 (特にネーミング) は、ユーザーのニーズを満たすのに十分柔軟であるべきだと強く信じています。現在、StyleCop+ は次の方法でケースをサポートできます。たとえば、プライベート フィールドの名前付けテンプレートに「例外」(必要なだけ) を追加して、次のようにすることができます。

m_$(aaBb)
m_d3d$(AaBb)

これは回避策である可能性が高くなりますが、「d3d」のケースについて考えてみます.StyleCop +はこのようなものをサポートするかもしれません.

興味深い例をありがとう!

于 2011-02-01T05:16:48.437 に答える
0

抑制属性の追加は、時間と長いプロセスがかかるすべてのメソッドの上に行う必要があります。

プロジェクトからこのルールを削除したい場合は、これを試してください

  • プロジェクトを右クリック
  • Stylecop 設定の選択
  • SA1305を探す
  • 結果セットからルールのチェックを外します
  • [適用] - [OK] をクリックします。
  • スタイル COP ルールを再実行します。
于 2017-02-09T20:27:22.877 に答える