Share via


Kod ölçümü verileri üretme

Kod ölçümleri verilerini üç yolla oluşturabilirsiniz:

.NET kod kalitesi çözümleyicileri kod ölçümleri kuralları

.NET kod kalitesi çözümleyicileri çeşitli kod ölçümleri çözümleyicisi kuralları içerir:

Bu kurallar varsayılan olarak devre dışı bırakılır, ancak bunları Çözüm Gezgini veya EditorConfig dosyasında etkinleştirebilirsiniz. Örneğin, CA1502 kuralını uyarı olarak etkinleştirmek için EditorConfig dosyanız aşağıdaki girdiyi içerir:

dotnet_diagnostic.CA1502.severity = warning

Yapılandırma

Kod ölçüm kurallarının tetiklendiği eşikleri yapılandırabilirsiniz.

  1. Bir metin dosyası oluşturun. Örneğin, CodeMetricsConfig.txt olarak adlandırabilirsiniz.

  2. İstenen eşikleri metin dosyasına aşağıdaki biçimde ekleyin:

    CA1502: 10
    

    Bu örnekte, bir yöntemin döngüsel karmaşıklığı 10'dan büyük olduğunda CA1502 kuralı tetiklenen şekilde yapılandırılır.

  3. Visual Studio'nun Özellikler penceresinde veya proje dosyasında yapılandırma dosyasının derleme eylemini AdditionalFiles olarak işaretleyin. Örneğin:

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

Kod Ölçümlerini Hesapla menü komutu

Kod Ölçümlerini Çözümle>menüsünü kullanarak IDE'de açık projelerinizin biri veya tümü için kod ölçümleri oluşturun.

Çözümün tamamı için kod ölçümleri sonuçları oluşturma

Bir çözümün tamamı için aşağıdaki yollardan herhangi biri ile kod ölçümleri sonuçları oluşturabilirsiniz:

  • Menü çubuğunda Çözüm için Kod Ölçümlerini>Hesapla'yı seçin>.

  • Çözüm Gezgini'da çözüme sağ tıklayın ve ardından Kod Ölçümlerini Hesapla'yı seçin.

  • Kod Ölçümleri Sonuçları penceresinde Çözüm için Kod Ölçümlerini Hesapla düğmesini seçin.

Sonuçlar oluşturulur ve Kod Ölçümleri Sonuçları penceresi görüntülenir. Sonuç ayrıntılarını görüntülemek için Hiyerarşi sütunundaki ağacı genişletin.

Bir veya daha fazla proje için kod ölçümleri sonuçları oluşturma

  1. Çözüm Gezgini'da bir veya daha fazla proje seçin.

  2. Menü çubuğundan Seçili Projelerde Kod Ölçümlerini>Hesapla'yı seçin>.

Sonuçlar oluşturulur ve Kod Ölçümleri Sonuçları penceresi görüntülenir. Sonuç ayrıntılarını görüntülemek için Hiyerarşi'deki ağacı genişletin.

Komut satırı kodu ölçümleri

.NET Framework, .NET Core ve .NET Standard uygulamaları için C# ve Visual Basic projeleri için komut satırından kod ölçümleri verileri oluşturabilirsiniz. Komut satırından kod ölçümlerini çalıştırmak için Microsoft.CodeAnalysis.Metrics NuGet paketini yükleyin veya Metrics.exe yürütülebilir dosyasını kendiniz oluşturun.

Microsoft.CodeAnalysis.Metrics NuGet paketi

Komut satırından kod ölçümleri verileri oluşturmanın en kolay yolu Microsoft.CodeAnalysis.Metrics NuGet paketini yüklemektir. Paketi yükledikten sonra proje dosyanızı içeren dizinden komutunu çalıştırın msbuild /t:Metrics . Örneğin:

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)

belirterek /p:MetricsOutputFile=<filename>çıkış dosyası adını geçersiz kılabilirsiniz. ayrıca belirterek /p:LEGACY_CODE_METRICS_MODE=trueeski stil kod ölçümleri verilerini de alabilirsiniz. Örneğin:

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)

Kod ölçümleri çıkışı

Oluşturulan XML çıkışı aşağıdaki biçimi alır:

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

NuGet paketini yüklemek istemiyorsanız Metrics.exe yürütülebilir dosyasını doğrudan oluşturabilir ve kullanabilirsiniz. Metrics.exe yürütülebilir dosyasını oluşturmak için:

  1. dotnet/roslyn-analyzers depoyu kopyalayın.

  2. Visual Studio için Geliştirici Komut İstemi'ni yönetici olarak açın.

  3. roslyn-analyzers deposunun kökünden aşağıdaki komutu yürütür:Restore.cmd

  4. Dizini src\Tools\Metrics olarak değiştirin.

  5. Aşağıdaki komutu yürüterek Metrics.csproj projesini oluşturun:

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

    Depo kökü altındaki artifacts\bin dizininde Metrics.exe adlı bir yürütülebilir dosya oluşturulur.

Metrics.exe kullanımı

Metrics.exe dosyasını çalıştırmak için, bağımsız değişken olarak bir proje veya çözüm ve çıkış XML dosyası sağlayın. Örneğin:

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.

Eski mod

Metrics.exe dosyasını eski modda oluşturmayı seçebilirsiniz. Aracın eski mod sürümü, aracın hangi eski sürümlerinin oluşturduğuna daha yakın ölçüm değerleri oluşturur. Ayrıca, eski modda Metrics.exe, aracın önceki sürümlerinin kod ölçümleri oluşturduğu yöntem türleri kümesi için kod ölçümleri oluşturur. Örneğin, alan ve özellik başlatıcılar için kod ölçümleri verileri oluşturmaz. Eski mod geriye dönük uyumluluk için veya kod ölçüm numaralarına göre kod iade geçitleriniz varsa kullanışlıdır. Metrics.exe dosyasını eski modda derleme komutu şu şekildedir:

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

Daha fazla bilgi için bkz . Eski modda kod ölçümleri oluşturmayı etkinleştirme.

Önceki sürümler

Visual Studio 2015, Metrics.exe olarak da adlandırılan bir komut satırı kod ölçümleri aracı içeriyordu. Aracın bu önceki sürümü bir ikili analiz, yani derleme tabanlı bir analiz yaptı. Metrics.exe aracının daha yeni sürümü bunun yerine kaynak kodunu analiz eder. Daha yeni Metrics.exe aracı kaynak kod tabanlı olduğundan, komut satırı kod ölçümleri sonuçları Visual Studio IDE ve Metrics.exe'nin önceki sürümleri tarafından oluşturulanlardan farklı olabilir. Visual Studio 2019'dan başlayarak, Visual Studio IDE komut satırı aracı gibi kaynak kodu analiz eder ve sonuçlar aynı olmalıdır.

Yeni komut satırı kod ölçümleri aracı, çözüm ve proje yüklenebildiği sürece kaynak kodu hataları olsa bile ölçümleri hesaplar.

Ölçüm değeri farklılıkları

Visual Studio 2019 sürüm 16.4 ve Microsoft.CodeAnalysis.Metics'den (2.9.5) SourceLines başlayarak önceki ExecutableLinesLinesOfCode ölçümü değiştirin. Yeni ölçümlerin açıklamaları için bkz . Kod ölçümleri değerleri. Ölçüm LinesOfCode eski modda kullanılabilir.

ve gibi CyclomaticComplexityMaintainabilityIndex diğer ölçümler, Metrics.exe'nin önceki sürümleriyle aynı formülleri kullanır, ancak yeni araç ara dil (IL) yönergeleri yerine sayısını IOperations (mantıksal kaynak yönergeleri) sayar. Sayılar Visual Studio IDE ve Metrics.exe'nin önceki sürümleri tarafından oluşturulanlardan biraz farklı olacaktır.