2008-12-11 13 views
42

¿Cómo es posible hacer que el diccionario personalizado FxCop funcione correctamente?¿Cómo hacer funcionar el diccionario personalizado FxCop?

He intentado agregar palabras para reconocer el archivo 'CustomDictionary.xml', que se guarda en la misma carpeta que el archivo de proyecto FxCop. Esto no parece funcionar, ya que todavía recibo el mensaje FxCop de 'Los identificadores deben escribirse correctamente', incluso después de volver a cargar y volver a ejecutar FxCop. Usando la versión 1.36.

+2

I puedo confirmar que esto también ocurre en mi máquina. He usado ProcessMonitor para confirmar que el archivo CustomDictionary.xml está siendo leído por FxCop, pero el error persiste. –

+0

Hasta ahora he encontrado este enlace que puede ayudar: Crear un diccionario personalizado para el análisis de código en VS2008 http://duncanjasmith.blogspot.com/2008/07/creating-custom-dictionary-for-code. html –

Respuesta

4

Que yo sepa, FxCop 1.35 en adelante utiliza dos fuentes para el diccionario.

  • El diccionario de Microsoft Office (la adición de palabras a través de MS Word, etc. debería funcionar) Archivo
  • A 'CustomDictionary.xml' almacenado en la carpeta de FxCop programa, en lugar de la carpeta de archivo del proyecto.
+0

Probé el diccionario de Microsoft Office. No funcionó. –

+0

También funciona en la carpeta de archivos del proyecto. Estoy usando VS 2017 –

29

Si lo usa dentro de Visual Studio ...

De Visual Studio Code Analysis Team Blog

Para agregar un diccionario personalizado a un C# y Visual Basic proyecto es simple:

  1. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto y elija Agregar -> Nuevo elemento ...
  2. En plantillas, seleccione Archivo XML, introduzca un nombre para el diccionario, tales como CodeAnalysisDictionary.xml y haga clic en Agregar
  3. En el Explorador de soluciones, haga clic en el archivo XML y seleccione Propiedades
  4. En la ventana de herramientas Propiedades , bajo Acción de generación elegir CodeAnalysisDictionary
  5. en el Explorador de soluciones, haga doble clic en el diccionario recién creado para abrirlo
  6. en el editor de XML, pegue el siguiente, en sustitución de "productname" y "nombredeempresa" con su equipo equivalentes:

    <Dictionary> 
        <Words> 
         <Recognized> 
          <Word>"productname"</Word> 
          <Word>"companyname"</Word> 
         </Recognized> 
        </Words> 
    </Dictionary> 
    

Ahora está listo para comenzar a introducir sus propias palabras personalizadas. Simplemente agregue un nuevo elemento para cada palabra en su proyecto que no existe en el diccionario . Cada palabra es distingue entre mayúsculas y minúsculas, por lo que se reconocerá cualquier envoltura de la palabra . Code Analysis recogerá automáticamente el diccionario personalizado la próxima vez que se ejecute.

+1

CodeAnalysisDictionary desencadena un error de "Valor de propiedad no es válido." En mi sistema. –

+0

"en Build Action elija CodeAnalysisDictionary" No veo esta opción; todo lo que veo son 'Ninguno', 'Compilar', 'Contenido' y 'Recurso incrustado' – Damien

+0

esto es probablemente solo para vs2010 – Cohen

17

La forma más fácil es simplemente lo llaman "CustomDictionary.xml" y ponerlo en su carpeta de soluciones, donde FxCop (1,36 a prueba aquí) lo recogerá de forma automática, si usted tiene

<CustomDictionaries SearchFxCopDir="True" 
        SearchUserProfile="True" 
        SearchProjectDir="True" /> 

en tu archivo de proyecto FxCop.

Alternativamente, puede especificarlo a través del parámetro de línea de comando /dictionary.

+0

Creo que quieres decir para decir "ponerlo en la carpeta del proyecto" no "ponerlo en la carpeta de la solución". – mhenry1384

+0

No, FxCop busca los directorios principales de la carpeta del proyecto. Por lo tanto, colocando el diccionario personalizado en la carpeta de la solución, comparte las entradas con todos los proyectos –

+1

10.0 no funciona :( –

3

Además de la respuesta de David Schmitt above, es posible que deba modificar/eliminar el diccionario personalizado que se envía con FxCop desde la carpeta de instalación de FxCop.

Acabo de instalar FxCop v1.36, y no pude obtener las palabras específicas del proyecto en mi diccionario para ser reconocidas hasta que eliminé el diccionario personalizado en C:\Program Files\Microsoft FxCop 1.36\CustomDictionary.xml.

Una vez que moví eso a un lado, FxCop comenzó a usar el CustomDictionary.xml en la carpeta de la solución.

Esto plantea la cuestión de cómo agregar palabras comunes a un diccionario personalizado compartido y palabras específicas de proyecto/solución dentro de otros diccionarios personalizados y, de hecho, hacer que FxCop use ambos. Pero por ahora se está trabajando ....

+0

Si elimino el diccionario en la carpeta fxCop, recibo más errores ya que las palabras como Json no son reconocidas, y si agrego palabras a este diccionario (que no es una solución real) la palabra aún no se reconoce. – DevDave

4

Me postulo FxCopCmd.exe como parte de mi proceso de construcción, y aquí me pase el parámetro de línea de comandos diccionario

FxCopCmd.exe ... /dictionary:FxCopDictionary.xml 

Este trabajo con el Visual Studio 2010 RC versión de FxCop. No sé si funcionará con versiones anteriores.

1

También asegúrese de que el archivo sea realmente *.xml y no *.xml.txt. Entonces siéntete tonto al crear un archivo con el bloc de notas y olvidando que siempre agrega una extensión de texto. Eso es lo que resultó ser para mí.

0

no tenía para establecer Acción de generación ser CodeAnalysisDictionary. De hecho, ni siquiera tenía eso como una opción (usando Visual Studio 2010 Professional). Estoy usando la extensión FxCop Integrator. Le permite hacer clic derecho en la Solución y elegir Code Analysis. La otra opción es Más tareas. Dentro de ese Más tareas menú es la capacidad de editar Editar diccionario FxCop. Cuando realicé la edición, creó una nueva carpeta de solución llamada Code Analysis que contiene un nuevo archivo XML llamado FxCopDictionary.xml. Este archivo XML está configurado como se esperaría que fuera el archivo CustomDictionary.xml.

Espero que esto ayude a alguien por ahí!

2

Luché con la mayoría de las respuestas anteriores y seguí buscando una solución. Finalmente hice este cambio a mi archivo .fxcop y comprobado en control de código fuente, funciona tanto desde la línea de comandos y la interfaz gráfica de usuario FxCop

me cambió esta línea

<CustomDictionaries SearchFxCopDir="True" SearchUserProfile="True" SearchProjectDir="True" /> 

a

<CustomDictionaries SearchFxCopDir="True" SearchUserProfile="True" SearchProjectDir="True" > 
    <CustomDictionary Path="$(ProjectDir)/CustomDictionary.xml"/> 
</CustomDictionaries> 
Cuestiones relacionadas