Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede generar datos de métricas de código de tres maneras:
Al habilitar analizadores de calidad de código de .NET y habilitar las cuatro reglas de métricas de código (capacidad de mantenimiento) que contiene.
Al elegir el comando de menú Analizar>calcular métricas de código en Visual Studio.
Desde la línea de comandos para proyectos de C# y Visual Basic.
Reglas de métricas de código de analizadores de calidad de código de .NET
Los analizadores de calidad de código de .NET incluyen varias reglas de analizador de métricas de código:
Estas reglas están deshabilitadas de forma predeterminada, pero puede habilitarlas desde el Explorador de soluciones o en un archivo EditorConfig . Por ejemplo, para habilitar la regla CA1502 como advertencia, el archivo EditorConfig contendrá la entrada siguiente:
dotnet_diagnostic.CA1502.severity = warning
Configuración
Puede configurar los umbrales en los que se activan las reglas de métricas de código.
Cree un archivo de texto. Por ejemplo, puede asignarle un nombre CodeMetricsConfig.txt.
Agregue los umbrales deseados al archivo de texto con el formato siguiente:
CA1502: 10
En este ejemplo, la regla CA1502 está configurada para activarse cuando la complejidad ciclomática de un método es mayor que 10.
En la ventana Propiedades de Visual Studio o en el archivo de proyecto, marque la acción de compilación del archivo de configuración como AdditionalFiles. Por ejemplo:
<ItemGroup> <AdditionalFiles Include="CodeMetricsConfig.txt" /> </ItemGroup>
Comando de menú Calcular métricas de código
Genere métricas de código para uno o todos los proyectos abiertos en el IDE mediante el menú Analizar>calcular métricas de código .
Generación de resultados de métricas de código para una solución completa
Puede generar resultados de métricas de código para una solución completa de cualquiera de las maneras siguientes:
En la barra de menús, seleccione Analizar>calcular métricas> de códigopara la solución.
En el Explorador de soluciones, haga clic con el botón derecho en la solución y seleccione Calcular métricas de código.
En la ventana Resultados de métricas de código, seleccione el botón Calcular métricas de código para la solución .
Se generan los resultados y se muestra la ventana Resultados de métricas de código . Para ver los detalles de los resultados, expanda el árbol en la columna Jerarquía .
Generación de resultados de métricas de código para uno o varios proyectos
En el Explorador de soluciones, seleccione uno o varios proyectos.
En la barra de menús, seleccione Analizar>calcular métricas>de código para proyectos seleccionados.
Se generan los resultados y se muestra la ventana Resultados de métricas de código . Para ver los detalles de los resultados, expanda el árbol en la jerarquía.
Métricas de código de línea de comandos
Puede generar datos de métricas de código desde la línea de comandos para proyectos de C# y Visual Basic para aplicaciones de .NET Framework, .NET Core y .NET Standard. Para ejecutar métricas de código desde la línea de comandos, instale el paquete NuGet Microsoft.CodeAnalysis.Metrics o compile el archivo ejecutableMetrics.exe usted mismo.
Paquete NuGet Microsoft.CodeAnalysis.Metrics
La manera más fácil de generar datos de métricas de código desde la línea de comandos es instalar el paquete NuGet Microsoft.CodeAnalysis.Metrics . Después de instalar el paquete, ejecute msbuild /t:Metrics
desde el directorio que contiene el archivo del proyecto. Por ejemplo:
C:\source\repos\ClassLibrary3\ClassLibrary3>msbuild /t:Metrics
Microsoft (R) Build Engine version 16.0.360-preview+g9781d96883 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Build started 1/22/2019 4:29:57 PM.
Project "C:\source\repos\ClassLibrary3\ClassLibrary3\ClassLibrary3.csproj" on node 1 (Metrics target(s))
.
Metrics:
C:\source\repos\ClassLibrary3\packages\Microsoft.CodeMetrics.2.6.4-ci\build\\..\Metrics\Metrics.exe /project:C:\source\repos\ClassLibrary3\ClassLibrary3\ClassLibrary3.csproj /out:ClassLibrary3.Metrics.xml
Loading ClassLibrary3.csproj...
Computing code metrics for ClassLibrary3.csproj...
Writing output to 'ClassLibrary3.Metrics.xml'...
Completed Successfully.
Done Building Project "C:\source\repos\ClassLibrary3\ClassLibrary3\ClassLibrary3.csproj" (Metrics target(s)).
Build succeeded.
0 Warning(s)
0 Error(s)
Puede invalidar el nombre del archivo de salida especificando /p:MetricsOutputFile=<filename>
. También puede obtener datos de métricas de código de estilo heredado especificando /p:LEGACY_CODE_METRICS_MODE=true
. Por ejemplo:
C:\source\repos\ClassLibrary3\ClassLibrary3>msbuild /t:Metrics /p:LEGACY_CODE_METRICS_MODE=true /p:MetricsOutputFile="Legacy.xml"
Microsoft (R) Build Engine version 16.0.360-preview+g9781d96883 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Build started 1/22/2019 4:31:00 PM.
The "MetricsOutputFile" property is a global property, and cannot be modified.
Project "C:\source\repos\ClassLibrary3\ClassLibrary3\ClassLibrary3.csproj" on node 1 (Metrics target(s))
.
Metrics:
C:\source\repos\ClassLibrary3\packages\Microsoft.CodeMetrics.2.6.4-ci\build\\..\Metrics.Legacy\Metrics.Legacy.exe /project:C:\source\repos\ClassLibrary3\ClassLibrary3\ClassLibrary3.csproj /out:Legacy.xml
Loading ClassLibrary3.csproj...
Computing code metrics for ClassLibrary3.csproj...
Writing output to 'Legacy.xml'...
Completed Successfully.
Done Building Project "C:\source\repos\ClassLibrary3\ClassLibrary3\ClassLibrary3.csproj" (Metrics target(s)).
Build succeeded.
0 Warning(s)
0 Error(s)
Salida de métricas de código
La salida XML generada toma el formato siguiente:
<?xml version="1.0" encoding="utf-8"?>
<CodeMetricsReport Version="1.0">
<Targets>
<Target Name="ConsoleApp20.csproj">
<Assembly Name="ConsoleApp20, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="DepthOfInheritance" Value="1" />
<Metric Name="SourceLines" Value="11" />
<Metric Name="ExecutableLines" Value="1" />
</Metrics>
<Namespaces>
<Namespace Name="ConsoleApp20">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="DepthOfInheritance" Value="1" />
<Metric Name="SourceLines" Value="11" />
<Metric Name="ExecutableLines" Value="1" />
</Metrics>
<Types>
<NamedType Name="Program">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="DepthOfInheritance" Value="1" />
<Metric Name="SourceLines" Value="7" />
<Metric Name="ExecutableLines" Value="1" />
</Metrics>
<Members>
<Method Name="void Program.Main(string[] args)" File="C:\source\repos\ConsoleApp20\ConsoleApp20\Program.cs" Line="7">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="SourceLines" Value="4" />
<Metric Name="ExecutableLines" Value="1" />
</Metrics>
</Method>
</Members>
</NamedType>
</Types>
</Namespace>
</Namespaces>
</Assembly>
</Target>
</Targets>
</CodeMetricsReport>
Metrics.exe
Si no desea instalar el paquete NuGet, puede generar y usar el archivo ejecutableMetrics.exe directamente. Para generar el archivo ejecutable deMetrics.exe :
Clone el repositorio dotnet/roslyn-analyzers .
Abra el símbolo del sistema para desarrolladores para Visual Studio como administrador.
Desde la raíz del repositorio roslyn-analyzers , ejecute el siguiente comando:
Restore.cmd
Cambie el directorio a src\Tools\Metrics.
Ejecute el siguiente comando para compilar el proyecto Metrics.csproj :
msbuild /m /v:m /p:Configuration=Release Metrics.csproj
Se genera un archivo ejecutable denominado Metrics.exe en el directorio artifacts\bin en la raíz del repositorio.
uso de Metrics.exe
Para ejecutar Metrics.exe, proporcione un proyecto o solución y un archivo XML de salida como argumentos. Por ejemplo:
C:\>Metrics.exe /project:ConsoleApp20.csproj /out:report.xml
Loading ConsoleApp20.csproj...
Computing code metrics for ConsoleApp20.csproj...
Writing output to 'report.xml'...
Completed Successfully.
Modo heredado
Puede elegir compilar Metrics.exe en modo heredado. La versión del modo heredado de la herramienta genera valores de métrica que están más cerca de las versiones anteriores de la herramienta generadas. Además, en el modo heredado, Metrics.exe genera métricas de código para el mismo conjunto de tipos de método para los que se generaron las versiones anteriores de las métricas de código generadas por la herramienta. Por ejemplo, no genera datos de métricas de código para inicializadores de campo y propiedad. El modo heredado es útil para la compatibilidad con versiones anteriores o si tiene puertas de entrada de código basadas en números de métricas de código. El comando para compilar Metrics.exe en modo heredado es:
msbuild /m /v:m /t:rebuild /p:LEGACY_CODE_METRICS_MODE=true Metrics.csproj
Para obtener más información, consulte Habilitación de la generación de métricas de código en modo heredado.
Versiones anteriores
Visual Studio 2015 incluía una herramienta de métricas de código de línea de comandos que también se llamaba Metrics.exe. Esta versión anterior de la herramienta realizó un análisis binario, es decir, un análisis basado en ensamblados. En su lugar, la versión más reciente de la herramienta Metrics.exe analiza el código fuente. Dado que la herramienta deMetrics.exe más reciente está basada en código fuente, los resultados de las métricas de código de línea de comandos pueden ser diferentes a los generados por el IDE de Visual Studio y por versiones anteriores de Metrics.exe. A partir de Visual Studio 2019, el IDE de Visual Studio analiza el código fuente como la herramienta de línea de comandos y los resultados deben ser los mismos.
La nueva herramienta de métricas de código de línea de comandos calcula las métricas incluso en presencia de errores de código fuente, siempre y cuando se pueda cargar la solución y el proyecto.
Diferencias de valores de métricas
A partir de visual Studio 2019, versión 16.4 y Microsoft.CodeAnalysis.Metrics (2.9.5) SourceLines
y ExecutableLines
reemplace la métrica anterior LinesOfCode
. Para obtener descripciones de las nuevas métricas, consulte Valores de métricas de código. La LinesOfCode
métrica está disponible en modo heredado.
Otras métricas, como CyclomaticComplexity
y MaintainabilityIndex
usan las mismas fórmulas que las versiones anteriores de Metrics.exe, pero la nueva herramienta cuenta el número de instrucciones de IOperations
(instrucciones de origen lógico) en lugar de instrucciones de lenguaje intermedio (IL). Los números serán ligeramente diferentes a los generados por el IDE de Visual Studio y por versiones anteriores de Metrics.exe.