Frage

Mein Code enthält eine Variable mit dem Namen "M_D3DDevice".

Stylecop beschwert sich über diesen Namen:

SA1305: Der Variablenname 'M_D3DDevice' beginnt mit einem Präfix, das wie ungarische Notation aussieht. Entfernen Sie das Präfix oder fügen Sie ihn der Liste der zulässigen Präfixe hinzu.

(Beachten Sie, ich habe SA1308 manuell deaktiviert ("M_"), eine der wenigen Regeln, die ich nicht gehorchen möchte.)

Ich kann "D3D" nicht als Ausnahme in der ungarischen Registerkarte zulassen, da es nur 1 oder 2 Zeichenpräfixe zulässt und "D3" nicht zulässt. Ich habe alles ausprobiert, was ich mir vorstellen kann, um meiner CustomDictionary -Datei "D3D" hinzuzufügen (und die Dokumente implizieren, dass das benutzerdefinierte Dikte nicht für Regel 1305 verwendet wird).

Irgendwelche Vorschläge, um Stylecop zu erlauben? Es ist jetzt eine Frage des Stolzes, meine Variable nicht zu f2.

War es hilfreich?

Lösung

Sie könnten sich ansehen Stylecop+. Es enthält flexible Namensregeln, mit denen Sie alle privaten Felder erzwingen können, beginnend mit "m_" (oder was auch immer Sie möchten), anstatt die Namensprüfung zu deaktivieren (wie Sie es getan haben).

In Bezug auf "D3dDevice" ist es ein sehr interessanter Fall. Logischerweise spaltet es die folgenden Wörter auf - {"D", "3", "D", "Gerät"} oder {"D3", "D", "Gerät"}. Und das zweite "D" scheint nicht "Kamelnotation" zu folgen.

Ich bin jedoch fest davon überzeugt, dass die statische Analyse (insbesondere die Benennung) flexibel genug sein sollte, um die Bedürfnisse der Benutzer zu erfüllen. Derzeit können Stylecop+ Ihren Fall auf folgende Weise unterstützen. Sie können beispielsweise "Ausnahme" (so viele wie Sie möchten) zur Benennung von Vorlagen für private Felder hinzufügen, damit sie aussehen wird:

M _ $ (AABB)
M_D3D $ (AABB)

Dies ist eher eine Problemumgehung, aber ich werde über Ihren "D3D" -Sfall nachdenken - und vielleicht wird Stylecop+ so etwas unterstützen.

Vielen Dank für das interessante Beispiel!

Andere Tipps

Sie können Stylecop auch von Fall zu Fall unterdrücken. z.B

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

Dies ist möglicherweise keine attraktive Option, wenn Sie zahlreiche beleidigende Namen haben, aber für ein oder zwei ist es im Allgemeinen in Ordnung.

Sie können auch die verwenden Settings.StyleCop In den Paketdateien zum Konfigurieren der Einstellungen.

Sie können bestimmte Wörter unterdrücken, indem Sie den folgenden Code zum Code hinzufügen Settings.StyleCop Datei:

<Analyzer AnalyzerId="StyleCop.CSharp.NamingRules">
  <AnalyzerSettings>
    <CollectionProperty Name="Hungarian">
      <Value>as</Value>
      <Value>do</Value>
      <Value>id</Value>
      <Value>if</Value>
      <Value>in</Value>
      <Value>ip</Value>
      <Value>is</Value>
      <Value>mx</Value>
      <Value>my</Value>
      <Value>no</Value>
      <Value>on</Value>
      <Value>to</Value>
      <Value>ui</Value>
      <Value>vs</Value>
      <Value>x</Value>
      <Value>y</Value>
      <Value>z</Value>
      <Value>iOS</Value>
      <Value>IOS</Value>
    </CollectionProperty>
  </AnalyzerSettings>
</Analyzer>

Sie können die unterdrücken Hungarain Regeln Sie sich selbst, indem Sie das Folgende hinzufügen Settings.StyleCop Datei

<Analyzer AnalyzerId="StyleCop.CSharp.NamingRules">
  <Rules>
   <Rule Name="FieldNamesMustNotUseHungarianNotation">
    <RuleSettings>
     <BooleanProperty Name="Enabled">
        False
     </BooleanProperty>
    </RuleSettings>
   </Rule>
 </Rules>
</Analyzer>

Das Hinzufügen von Unterdrückungsattribut sollte neben allen Methoden durchgeführt werden, die Zeit und einen langen Prozess dauern.

Wenn Sie diese Regel aus Ihrem Projekt entfernen möchten, versuchen Sie dies

  • Klicken Sie mit der rechten Maustaste auf Ihr Projekt
  • Wählen Sie Stylecop -Einstellungen
  • Finden Sie SA1305
  • Deaktivieren Sie die Regel aus dem Ergebnissatz
  • Klicken Sie auf Bewerben - OK
  • Wiederholung von Cop -Regeln erneut.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top