Pregunta

Mi código contiene una variable llamada "m_d3ddevice".

Stylecop se queja de este nombre:

SA1305: El nombre de la variable 'M_D3DVICE' comienza con un prefijo que parece notación húngara. Elimine el prefijo o agréguelo a la lista de prefijos permitidos.

(Tenga en cuenta que he deshabilitado manualmente SA1308 ("M_"), una de las pocas reglas que estoy dispuesto a desobedecer).

No puedo permitir que "D3D" sea una excepción en la pestaña húngara, ya que solo permite 1 o 2 prefijos de char, y permitir que "D3" no ayudó. He intentado todo lo que puedo pensar para agregar "D3D" a mi archivo de admisión (y de todos modos los documentos implican que el CustomDict no se usa para la Regla 1305).

¿Alguna sugerencia para hacer que Stylecop permita este? Ahora es una cuestión de orgullo no tener que tener que hacer mi variable.

¿Fue útil?

Solución

Podrías echar un vistazo a Stylecop+. Contiene reglas de nomenclatura flexibles que le permitirán forzar todos los campos privados que se nombren a partir de "m_" (o lo que desee) en lugar de deshabilitar la verificación de nombres (como lo hizo).

Con respecto a "d3ddevice", es un caso muy interesante. Lógicamente, se divide a las siguientes palabras: {"d", "3", "d", "dispositivo"} o {"d3", "d", "dispositivo"}. Y el segundo "D" parece no seguir "Camelnotation".

Pero, creo firmemente que el análisis estático (particularmente los nombres) debería ser lo suficientemente flexible como para satisfacer las necesidades de los usuarios. Actualmente, Stylecop+ puede admitir su caso de la siguiente manera; por ejemplo, puede agregar "excepción" (tantas como desee) a la plantilla de nombres para campos privados, para que se vea como:

m _ $ (aabb)
m_d3d $ (aabb)

Es más probable que esto sea solución, pero pensaré en su caso "D3D", y tal vez Stylecop+ admitirá algo como esto.

¡Gracias por el interesante ejemplo!

Otros consejos

También puede suprimir a Stylecop caso por caso. p.ej

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

Esta podría no ser una opción atractiva si tiene numerosos nombres ofensivos, pero para uno o dos, generalmente está bien.

También puedes usar el Settings.StyleCop en los archivos de paquete para configurar la configuración.

Puede suprimir palabras específicas agregando a continuación código al Settings.StyleCop expediente:

<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>

Puedes suprimir el Hungarain Gobernar a sí mismo agregando lo siguiente al Settings.StyleCop expediente

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

Agregar atributo de supresión debe hacerse además de todos los métodos que tomarán tiempo y un proceso largo.

Si desea eliminar esta regla de su proyecto, pruebe esto

  • Haga clic derecho en su proyecto
  • Seleccione la configuración de stylecop
  • Encuentra SA1305
  • Desmarque la regla del conjunto de resultados
  • Haga clic en Aplicar - Aceptar
  • Rerun Style Cop vuelve a reglas.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top