Esta página contiene respuestas a algunas preguntas frecuentes sobre el análisis de código basado en .NET Compiler Platform en Visual Studio.
Análisis de código frente .editorconfig
¿Qué hay que usar para comprobar el estilo del código: análisis de código o .editorconfig?
Los archivos de análisis de código y .editorconfig funcionan a la par. Al definir estilos de código en un archivo .editorconfig o en la página Opciones del editor de texto, realmente lo que se está haciendo es configurar los analizadores de código integrados en Visual Studio. Los archivos EditorConfig se pueden usar para habilitar o deshabilitar las reglas del analizador, y también para configurar paquetes de analizador de NuGet.
Archivo .editorconfig frente a conjuntos de reglas
¿Hay que configurar los analizadores con un conjunto de reglas o con un archivo .editorconfig?
Los conjuntos de reglas y los archivos .editorconfig pueden coexistir y ambos se pueden usar para configurar analizadores. Tanto los archivos .editorconfig como los conjuntos de reglas permiten habilitar y deshabilitar reglas y establecer su gravedad.
Pero los archivos .editorconfig ofrecen otras maneras de configurar reglas también:
- En el caso de los analizadores de calidad de código de .NET, los archivos EditorConfig permiten definir qué tipos de código se van a analizar.
- Para los analizadores de estilo de código de .NET integrados en Visual Studio, los archivos EditorConfig permiten definir los estilos de código preferidos para un código base.
Aparte de los conjuntos de reglas y los archivos .editorconfig, algunos analizadores se configuran usando archivos de texto marcados como archivos adicionales en los compiladores de C# y Visual Basic.
Nota
- En Visual Studio 2019 versión 16.3 y versiones posteriores, los archivos .editorconfig solo se pueden usar para habilitar reglas y establecer su gravedad .
- Los archivos .editorconfig no se pueden usar para configurar análisis heredados, mientras que los conjuntos de reglas sí.
Análisis de código en compilaciones de integración continua (CI)
¿El análisis de código basado en .NET Compiler Platform funciona en compilaciones de integración continua (CI)?
Sí. En los analizadores que se instalan desde un paquete NuGet, estas reglas se aplican en el momento de la compilación, incluso durante una compilación de CI. Los analizadores utilizados en las compilaciones de integración continua respetan la configuración de reglas tanto de los conjuntos de reglas como de los archivos .editorconfig. Actualmente, los analizadores de código integrados en Visual Studio no están disponibles como paquete NuGet, por lo que estas reglas no se pueden aplicar en una compilación de integración continua.
Analizadores de IDE frente a StyleCop
¿Cuál es la diferencia entre los analizadores de código del IDE de Visual Studio y los analizadores StyleCop?
El IDE de Visual Studio incluye analizadores integrados que buscan problemas tanto de estilo como de calidad del código. Estas reglas sirven para usar las nuevas características del lenguaje a medida que se van incorporando y mejoran el mantenimiento del código. Los analizadores de IDE se actualizan continuamente con cada versión de Visual Studio.
Los analizadores StyleCop son analizadores de terceros que se instalan como un paquete NuGet y que comprueban la coherencia de estilo en el código. En general, las reglas de StyleCop permiten establecer las preferencias personales de un código base sin recomendar un estilo sobre otro.
Analizadores de código frente a análisis heredado
¿Cuál es la diferencia entre el análisis heredado y el análisis de código basado en .NET Compiler Platform?
El análisis de código basado en .NET Compiler Platform analiza el código fuente en tiempo real y durante la compilación, mientras que el análisis heredado analiza los archivos binarios una vez completada la compilación. Para más información, vea Análisis basados en .NET Compiler Platform frente a análisis heredados.
Analizadores de FxCop frente a analizadores de .NET
¿Cuál es la diferencia entre los analizadores de FxCop y los de .NET?
Tanto los analizadores de FxCop como los de .NET hacen referencia a las implementaciones de las reglas de CA de FxCop del analizador de .NET Compiler Platform ("Roslyn"). Antes de Visual Studio 2019 16.8 y .NET 5.0, estos analizadores se incluyen como un paquete NuGet Microsoft.CodeAnalysis.FxCopAnalyzers
. A partir de Visual Studio 2019 16.8 y .NET 5.0, estos analizadores se incluyen con el SDK de .NET. También están disponibles como un paquete NuGet Microsoft.CodeAnalysis.NetAnalyzers
. Considere la posibilidad de migrar de los analizadores de FxCop a los de .NET.
Tratar advertencias como errores
En mi proyecto se usa la opción de compilación para tratar las advertencias como errores. Tras migrar de análisis heredado a análisis de código fuente, ahora todas las advertencias del análisis de código aparecen como errores. ¿Cómo puedo evitar esto?
Haga lo siguiente para evitar que las advertencias del análisis de código se traten como errores:
Cree un archivo .props con el siguiente contenido:
<Project> <PropertyGroup> <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors> </PropertyGroup> </Project>
Agregue una línea al archivo de proyecto .csproj o .vbproj para importar el archivo .props que creó en el paso anterior. Esta línea debe colocarse antes de cualquier línea que importe archivos .props del analizador. Por ejemplo, si el archivo .props se llama codeanalysis.props:
... <Import Project="..\..\codeanalysis.props" Condition="Exists('..\..\codeanalysis.props')" /> <Import Project="..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props" Condition="Exists('..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props')" /> ...
Página de propiedades de la solución de análisis de código
¿Dónde está la página de propiedades Análisis de código de la solución?
La página de propiedades Análisis de código a nivel de solución se ha eliminado en favor del grupo de propiedades compartidas, más fiable. Para administrar el análisis de código en el nivel de proyecto, la página de propiedades Análisis de código sigue estando disponible. (En el caso de los proyectos administrados, también se recomienda migrar desde conjuntos de reglas a EditorConfig para la configuración de reglas). Para compartir conjuntos de reglas en varios o todos los proyectos de una solución o un repositorio, se recomienda definir un grupo de propiedades con la propiedad CodeAnalysisRuleSet en un archivo compartido de propiedades o destinos o en el archivo Directory.props/Directory.targets. Si no tiene propiedades o destinos comunes que importen todos los proyectos, considere la posibilidad de agregar dicho grupo de propiedades a un archivo Directory.props o Directory.targets en un directorio de soluciones de nivel superior, que se importa automáticamente en todos los archivos de proyecto definidos en el directorio o sus subdirectorios.