Bagikan melalui


Menghasilkan data metrik kode

Anda dapat menghasilkan data metrik kode dengan tiga cara:

  • Dengan mengaktifkan penganalisis kualitas kode .NET dan mengaktifkan empat aturan metrik kode (maintainability) yang dikandungnya.

  • Dengan memilih perintah menu Analisis>Metrik Kode Hitung dalam Visual Studio.

  • Dari baris perintah untuk proyek C# dan Visual Basic.

Aturan metrik kode penganalisis kualitas kode .NET

Penganalisis kualitas kode .NET mencakup beberapa aturan penganalisis metrik kode:

Aturan ini dinonaktifkan secara default tetapi Anda dapat mengaktifkannya dari Penjelajah Solusi atau dalam file EditorConfig. Misalnya, untuk mengaktifkan aturan CA1502 sebagai peringatan, file EditorConfig Anda akan berisi entri berikut:

dotnet_diagnostic.CA1502.severity = warning

Konfigurasi

Anda dapat mengonfigurasi ambang di mana aturan metrik kode diaktifkan.

  1. Buat file teks. Sebagai contoh, Anda dapat menamainya CodeMetricsConfig.txt.

  2. Tambahkan ambang yang diinginkan ke file teks dalam format berikut:

    CA1502: 10
    

    Dalam contoh ini, aturan CA1502 dikonfigurasi untuk diaktifkan ketika kompleksitas siklomatik metode lebih besar dari 10.

  3. Di jendela Properti Visual Studio, atau dalam file proyek, tandai tindakan build file konfigurasi sebagai AdditionalFiles. Misalnya:

    <ItemGroup>
      <AdditionalFiles Include="CodeMetricsConfig.txt" />
    </ItemGroup>
    

Perintah menu Hitung Metrik Kode

Buat metrik kode untuk satu atau semua proyek terbuka Anda di IDE dengan menggunakan menu Analisis>Metrik Kode Hitung.

Hasilkan hasil metrik kode untuk seluruh solusi

Anda dapat menghasilkan hasil metrik kode untuk seluruh solusi dengan salah satu cara berikut:

  • Dari bilah menu, pilih Analisis>Hitung Metrik>Kode Untuk Solusi.

  • Di Penjelajah Solusi, klik kanan solusi lalu pilih Hitung Metrik Kode.

  • Di jendela Hasil Metrik Kode, pilih tombol Hitung Metrik Kode untuk Solusi .

Hasilnya dihasilkan dan jendela Hasil Metrik Kode ditampilkan. Untuk melihat detail hasil, perluas pohon di kolom Hierarki .

Hasilkan hasil metrik kode untuk satu atau beberapa proyek

  1. Di Penjelajah Solusi, pilih satu atau beberapa proyek.

  2. Dari bilah menu, pilih Analisis>Hitung Metrik>Kode Untuk Proyek yang Dipilih.

Hasilnya dihasilkan dan jendela Hasil Metrik Kode ditampilkan. Untuk melihat detail hasil, perluas pohon dalam Hierarki.

Metrik kode baris perintah

Anda dapat membuat data metrik kode dari baris perintah untuk proyek C# dan Visual Basic untuk aplikasi .NET Framework, .NET Core, dan .NET Standard. Untuk menjalankan metrik kode dari baris perintah, instal paket NuGet Microsoft.CodeAnalysis.Metrics atau buat metrics.exe yang dapat dieksekusi sendiri.

Paket NuGet Microsoft.CodeAnalysis.Metrics

Cara term mudah untuk menghasilkan data metrik kode dari baris perintah adalah dengan menginstal paket NuGet Microsoft.CodeAnalysis.Metrics . Setelah Anda menginstal paket, jalankan msbuild /t:Metrics dari direktori yang berisi file proyek Anda. Misalnya:

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)

Anda dapat mengambil alih nama file output dengan menentukan /p:MetricsOutputFile=<filename>. Anda juga bisa mendapatkan data metrik kode gaya warisan /p:LEGACY_CODE_METRICS_MODE=truedengan menentukan . Misalnya:

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)

Output metrik kode

Output XML yang dihasilkan mengambil format berikut:

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

Jika Anda tidak ingin menginstal paket NuGet, Anda dapat membuat dan menggunakan Metrics.exe executable secara langsung. Untuk menghasilkan Metrics.exe executable:

  1. Kloning repositori dotnet/roslyn-analyzers .

  2. Buka Perintah Pengembang untuk Visual Studio sebagai administrator.

  3. Dari akar repositori roslyn-analyzers , jalankan perintah berikut: Restore.cmd

  4. Ubah direktori menjadi src\Tools\Metrics.

  5. Jalankan perintah berikut untuk membangun proyek Metrics.csproj :

    msbuild /m /v:m /p:Configuration=Release Metrics.csproj
    

    Executable bernama Metrics.exe dihasilkan dalam direktori artefak\bin di bawah akar repositori.

Penggunaan Metrics.exe

Untuk menjalankan Metrics.exe, berikan proyek atau solusi dan file XML output sebagai argumen. Misalnya:

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.

Mode warisan

Anda dapat memilih untuk membuat Metrics.exe dalam mode warisan. Versi mode warisan alat menghasilkan nilai metrik yang lebih dekat dengan versi alat yang lebih lama yang dihasilkan. Selain itu, dalam mode warisan, Metrics.exe menghasilkan metrik kode untuk serangkaian jenis metode yang sama dengan versi alat sebelumnya yang menghasilkan metrik kode. Misalnya, ini tidak menghasilkan data metrik kode untuk penginisialisasi bidang dan properti. Mode warisan berguna untuk kompatibilitas mundur atau jika Anda memiliki gerbang check-in kode berdasarkan nomor metrik kode. Perintah untuk membangun Metrics.exe dalam mode warisan adalah:

msbuild /m /v:m /t:rebuild /p:LEGACY_CODE_METRICS_MODE=true Metrics.csproj

Untuk informasi selengkapnya, lihat Mengaktifkan pembuatan metrik kode dalam mode warisan.

Versi sebelumnya

Visual Studio 2015 menyertakan alat metrik kode baris perintah yang juga disebut Metrics.exe. Versi alat sebelumnya ini melakukan analisis biner, yaitu analisis berbasis rakitan. Versi alat Metrics.exe yang lebih baru menganalisis kode sumber sebagai gantinya. Karena alat Metrics.exe yang lebih baru berbasis kode sumber, hasil metrik kode baris perintah mungkin berbeda dengan yang dihasilkan oleh Visual Studio IDE dan oleh versi Metrics.exe sebelumnya. Mulai Visual Studio 2019, IDE Visual Studio menganalisis kode sumber seperti alat baris perintah dan hasilnya harus sama.

Alat metrik kode baris perintah baru menghitung metrik bahkan jika ada kesalahan kode sumber, selama solusi dan proyek dapat dimuat.

Perbedaan nilai metrik

Mulai visual Studio 2019 versi 16.4 dan Microsoft.CodeAnalysis.Metics (2.9.5), SourceLines dan ExecutableLines ganti metrik sebelumnya LinesOfCode . Untuk deskripsi metrik baru, lihat Nilai metrik kode. LinesOfCode Metrik tersedia dalam mode warisan.

Metrik lain seperti CyclomaticComplexity dan MaintainabilityIndex menggunakan rumus yang sama dengan versi Metrics.exe sebelumnya, tetapi alat baru menghitung jumlah IOperations (instruksi sumber logis) alih-alih instruksi bahasa perantara (IL). Angka akan sedikit berbeda dengan yang dihasilkan oleh Visual Studio IDE dan oleh versi Metrics.exe sebelumnya.