Personalizar el diccionario de Análisis de código

El análisis de código usa un diccionario integrado para comprobar los identificadores del código en busca de errores en la ortografía, mayúsculas y minúsculas gramaticales y otras convenciones de nomenclatura de las directrices de diseño de .NET. Puede crear un archivo XML de diccionario personalizado para agregar, quitar o modificar términos, abreviaturas y acrónimos en el diccionario integrado.

Por ejemplo, supongamos que el código contenía una clase denominada PisaPappeles. El análisis de código identificaría el nombre como un compuesto de dos palabras: pisa y pappeles. Después, generaría una advertencia de que pappeles no estaba escrito correctamente. Para forzar el análisis de código a reconocer la ortografía, puede agregar el término pappeles al diccionario personalizado.

Para crear un diccionario personalizado

Cree un archivo denominado CustomDictionary.xml.

Defina las palabras personalizadas mediante la siguiente estructura XML:

<Dictionary>
      <Words>
         <Unrecognized>
            <Word>knokker</Word>
         </Unrecognized>
         <Recognized>
            <Word></Word>
         </Recognized>
         <Deprecated>
            <Term PreferredAlternate=""></Term>
         </Deprecated>
         <Compound>
            <Term CompoundAlternate=""></Term>
         </Compound>
         <DiscreteExceptions>
            <Term></Term>
         </DiscreteExceptions>
      </Words>
      <Acronyms>
         <CasingExceptions>
            <Acronym></Acronym>
         </CasingExceptions>
      </Acronyms>
   </Dictionary>

Elementos de diccionario personalizados

Puede modificar el comportamiento del diccionario de análisis de código agregando términos como texto interno de los siguientes elementos en el diccionario personalizado:

Dictionary/Words/Recognized/Word

Para incluir un término en la lista de términos que el análisis de código identifica como escrito correctamente, agregue el término como texto interno de un elemento Dictionary/Words/Recognize/Word. Los términos de los elementos Dictionary/Words/Recognize/Word no distinguen mayúsculas de minúsculas.

Ejemplo

<Dictionary>
      <Words>
         <Recognized>
            <Word>knokker</Word>
            ...
         </Recognized>
         ...
      </Words>
      ...
</Dictionary>

Los términos de los nodos Dictionary/Words/Recognize se aplican a las siguientes reglas de análisis de código:

Dictionary/Words/Unrecognized/Word

Para excluir un término de la lista de términos que el análisis de código identifica como escrito correctamente, agregue el término que quiere excluir como texto interno de un elemento Dictionary/Words/Unrecognized/Word. Los términos de los elementos Dictionary/Words/Unrecognized/Word no distinguen mayúsculas de minúsculas.

Ejemplo

<Dictionary>
      <Words>
         <Unrecognized>
            <Word>meth</Word>
            ...
         </Unrecognized>
         ...
      </Words>
      ...
</Dictionary>

Los términos del nodo Dictionary/Words/Unrecognized se aplican a las siguientes reglas de análisis de código:

Dictionary/Words/Deprecated/Term[@PreferredAlternate]

Para incluir un término en la lista de términos que el análisis de código identifica como en desuso, agregue el término como texto interno de un elemento Dictionary/Words/Deprecated/Term. Un término en desuso es una palabra que está escrita correctamente, pero que no debe usarse.

Para incluir un término alternativo sugerido en la advertencia, especifique la alternativa en el atributo PreferredAlternate del elemento Term. Puede dejar vacío el valor del atributo si no desea sugerir una alternativa.

  • El término en desuso del elemento Dictionary/Words/Deprecated/Term no distingue mayúsculas de minúsculas.

  • El valor del atributo PreferredAlternate distingue mayúsculas de minúsculas. Use Pascal Case para alternativas compuestas.

Ejemplo

<Dictionary>
      <Words>
         <Deprecated>
            <Term PreferredAlternate="LogOn">login</Term>
            ...
         </Deprecated>
         ...
      </Words>
      ...
</Dictionary>

Los términos del nodo Dictionary/Words/Deprecated se aplican a las siguientes reglas de análisis de código:

Dictionary/Words/Compound/Term[@CompoundAlternate]

El diccionario integrado identifica algunos términos como términos únicos discretos en lugar de un término compuesto. Para incluir un término en la lista de términos que el análisis de código identifica como una palabra compuesta y especificar el uso de mayúsculas y minúsculas correctos del término, agregue el término como texto interno de un elemento Dictionary/Words/Compound/Term. En el atributo CompoundAlternate del elemento Term, especifique las palabras individuales que componen el término compuesto capitalizando la primera letra de las palabras individuales (mayúsculas y minúsculas Pascal). Tenga en cuenta que el término especificado en el texto interno se agrega automáticamente a la lista Dictionary/Words/DiscreteExceptions.

  • El término compuesto del elemento Dictionary/Words/Compound/Term no distingue mayúsculas de minúsculas.

  • El valor del atributo CompoundAlternate distingue mayúsculas de minúsculas. Use Pascal Case para alternativas compuestas.

Ejemplo

<Dictionary>
      <Words>
         <Compound>
            <Term CompoundAlternate="CheckBox">checkbox</Term>
            ...
         </Compound>
         ...
      </Words>
      ...
</Dictionary>

Los términos del nodo Dictionary/Words/Compound se aplican a las siguientes reglas de análisis de código:

Dictionary/Words/DiscreteExceptions/Term

Para excluir un término en la lista de términos que el análisis de código identifica como una sola palabra discreta cuando el término se comprueba mediante las reglas de mayúsculas y minúsculas para palabras compuestas, agregue el término como texto interno de un elemento Dictionary/Words/DiscreteExceptions/Term. El término del elemento Dictionary/Words/DiscreteExceptions/Term no distingue mayúsculas de minúsculas.

Ejemplo

<Dictionary>
      <Words>
         <DiscreteExceptions>
            <Term>checkbox</Term>
            ...
         </DiscreteExceptions>
         ...
      </Words>
      ...
</Dictionary>

Los términos del nodo Dictionary/Words/DiscreteExceptions se aplican a las siguientes reglas de análisis de código:

Dictionary/Acronyms/CasingExceptions/Acronym

Para incluir un acrónimo en la lista de términos que el análisis de código identifica como escrito correctamente y para indicar cómo el acrónimo cuando el término se comprueba mediante las reglas de mayúsculas y minúsculas para palabras compuestas, agregue el término como texto interno de un elemento Dictionary/Acronyms/CasingExceptions/Acronym. El acrónimo del elemento Dictionary/Acronyms/CasingExceptions/Acronym distingue mayúsculas de minúsculas.

Ejemplo

<Dictionary>
      <Acronyms>
         <CasingExceptions>
            <Acronym>NESW</Acronym>   <!-- North East South West -->
            ...
         </CasingExceptions>
         ...
      </Acronyms>
      ...
</Dictionary>

Los términos del nodo Dictionary/Acronyms/CasingExceptions se aplican a las siguientes reglas de análisis de código:

Aplicar un diccionario personalizado a un proyecto

  1. En Explorador de soluciones, use uno de los procedimientos siguientes:

    • Para agregar un diccionario a un único proyecto, haga clic con el botón derecho en el nombre del proyecto y, después, haga clic en Agregar elemento existente. Para los tipos de archivo, seleccione Todos los archivos y, a continuación, especifique el archivo en el cuadro de diálogo Añadir elemento existente.

    • Para agregar un diccionario que se comparte entre dos o más proyectos, busque el archivo que se va a compartir en el cuadro de diálogo Agregar elemento existente, haga clic en la flecha abajo del botón Agregar y, después, haga clic en Agregar como vínculo.

  2. En el Explorador de soluciones, haga clic con el botón derecho en el nombre de archivo CustomDictionary.xml y, después, haga clic en Propiedades.

  3. En la lista Acción de compilación, seleccione CodeAnalysisDictionary.

  4. En la lista Copiar al directorio de salida, seleccione No copiar.