Aracılığıyla paylaş


Kod ölçümleri verileri oluşturma

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ışıdır, ancak bunları Çözüm Gezgini'nden veya EditorConfig dosyasından 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

Konfigürasyon

Kod metriği kurallarının tetiklenme eşiklerini yapılandırabilirsiniz.

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

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

    CA1502: 10
    

    Bu örnekte, CA1502 kuralı, bir yöntemin döngüsel karmaşıklığı 10'dan büyük olduğunda tetiklenecek şekilde yapılandırılmıştı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 İçin>Kod Ölçümlerini Hesapla> seçeneğini seçin>.

  • Çözüm Gezgini'nde çö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'nde bir veya daha fazla proje seçin.

  2. Menü çubuğundanSeçili Projelerde> Hesapla'yı >.

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 doğrudan Metrics.exe yürütülebilir dosyasını 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'yi çalıştırmak üzere, bağımsız değişken olarak bir proje veya çözüm ve bir çı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

eski moddaMetrics.exe 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 oluşturduğu aynı 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çümleri numaralarına dayalı kod iade geçitleriniz varsa kullanışlıdır. Eski modda Metrics.exe 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.exeolarak da adlandırılan bir komut satırı kodu ölçüm aracı içeriyordu. Aracın bu önceki sürümü bir ikili analiz, yani derleme tabanlı bir analiz yaptı. bunun yerineMetrics.exe aracının daha yeni sürümü kaynak kodunu analiz eder. Daha yeniMetrics.exe aracı kaynak kod tabanlı olduğundan, komut satırı kod ölçümleri sonuçları Visual Studio IDE tarafından ve öncekiMetrics.exesürümlerinde 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.Metrics (2.9.5) ile SourceLines ve ExecutableLines, önceki LinesOfCode ölçümünün yerini alıyor. Yeni ölçümlerin açıklamaları için bkz. Kod ölçümleri değerleri. Eski modda LinesOfCode metriği kullanılabilir.

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