Aracılığıyla paylaş


Klonlama algılama kodu kullanarak yinelenen kodu bulma

Kod kopyaları çok benzer ayrı kod oluşuyor.Bir süredir geliştirilmekte olan bir uygulamada yaygın bir aynı durum kullanılırlar. Kopyaları bulmak ve birden fazla parça güncelleştirmek zorunda çünkü uygulamanız değiştirmek sabit olun.Visual Studio, böylece onları erişimcilerinden kod klonlar bulmanıza yardımcı olabilir.

Belirli bir parça kopyalara bulmak veya tüm kopyaları çözüm içinde bulabilirsiniz.Doğrudan kopyaları keşfetme yanı sıra, klonlama çözümleme aracı, değişkenlerin ve parametrelerin adları ve hangi bazı ifadeleri düzenlenmeyecek olduğu farklı parçaları bulabilirsiniz.

Kod Kaynağı Klonla analyser Visual C# ve Visual Basic projeleri Visual Studio solution boyunca yinelenen kodunu arar.

Güçlü eşleşme kodu klonlama analiz sonucunda

Belirli bir kod parçası kopyaları bulmak için

  1. Bir yöntem ya da get/set tanımı içindeki kod parçasının vurgulayın.

    [!NOT]

    İfadeleri, ancak olmayan alanı, yöntemi veya özelliği imzalar gibi bildirimleri kopyaları bulabilirsiniz.

  2. Parça kısayol menüsünden seçim eşleşen kopyaları çözümde bulmak.

Benzer bir yöntem ya da zaten varlığı çözümünüzdeki parçasındaki olup olmadığını öğrenmek istediğinizde bu yöntemi kullanın.

Tüm kopyaları bir çözüm bulmak için

  • Üzerinde Analyse menüsünden seçin Kod kopyaları için analiz çözümü.

Kodunuzu gözden geçirme bu yöntem özellikle yararlıdır.

[!NOT]

Bu komutla, 10'dan az uzun deyimleridir kopyaları keşfetti değil.

Sonuçları benzerlik sırada gösterilir.Kod parçaları görmek için her öğeyi genişletin.

Benzerlikler parçaları tarafından kullanılan yerel değişkenler farklı adlara sahip olsa bile ve birkaç ifadeleri eklenmiş veya silinmiş olsa bile algılanan dikkat edin.

Karşılaştırılacak klonlar

  1. İçinde Kodu Klonlama sonuçlarını penceresinde, iki dosya veya iki dosyaları içeren Klonlama grubunu seçin.

  2. Seçim karşılaştırmak kısayol menüsünden.

Bu özellik, kaynak denetimi altýnda sürümlerini karşılaştırmak için kullanılan aynı karşılaştırma aracını kullanır.Bunu değiştirmek isterseniz, Seç seçenekleri karşı araçları menü.Genişletme kaynak denetimi ve Visual Studio Team Foundation Server.Seçim kullanıcı araçları yapılandırma ve sonra ekleme.

Belirli dosyaları veya yöntemleri çözümlemesinden dışlamak için

  1. Yeni bir xml dosyası çıkarmak istediğiniz yöntem tanımlanmış olan Visual Studio proje ekleyin.

    Dosyayı projenin parçası olup önemli değildir.Proje üst dizininde olmalıdır.

  2. Dosya adı uzantısını değiştirmek.codeclonesettings

  3. Dosyanın içeriği aşağıdaki örnektekine benzer biçimde düzenleyin.

    <CodeCloneSettings>
      <Exclusions>
        <!-- Add any combination of the following node types. -->
        <!-- Absolute or relative path names: -->
        <File>MyFile.cs</File>
        <!-- Filepaths may contain wildcards: -->
        <File>GeneratedFiles\*.cs</File>
        <!-- Namespace, Type, and FunctionName must be fully qualified: -->
        <Namespace>MyCompany.MyProject</Namespace>
        <Type>MyCompany.MyProject.MyClass1</Type>
        <FunctionName>MyCompany.MyProject.MyClass2.MyMethod</FunctionName>
        <!-- Names may contain wildcards: -->
        <Namespace>*.AnotherProject</Namespace>
        <Type>*.AnotherClass*</Type>
        <FunctionName>MyProject.*.AnotherMethod</FunctionName>
      </Exclusions>
    </CodeCloneSettings>      
    

Hangi kod klonlar bulunur?

Kod Kaynağı Klonla analyzer "near miss" kopyaları bulacaksınız.

Kod genellikle kodunu kopyalayarak ve sonra yeni konumuna uyarlayarak geliştiriciler sonucu klonlar.Bu nedenle analyzer Klonla'yı bulmak başarısız olmadan önce yapılabilecek değişiklik derecesini göz önünde bulundurulacak en kolay yoldur.Aşağıdaki değişiklikler yapılabilir ve Klonlama hala tanınır.Her durumda, bu tür değişiklikler belirli sayıda tolerans yoktur:

  • Tanımlayıcılar olarak yeniden adlandırın.

  • Takın ve delete deyimlerini.

  • İfadeleri yeniden düzenleyin.

Hh205279.collapse_all(tr-tr,VS.110).gifNe yineleme bulunamaz?

  • Tür bildirimleri karşılaştırıldığında değil.İki sınıflarıyla çok benzeyen alanı bildirimleri kümesi varsa, örneğin, bunların kopyaları raporlanmaz.

    Yalnızca yöntem ve özellik tanımlarını deyimlerinde karşılaştırılır.

  • Çözüm kodu klonlar için analiz 10'dan az uzun deyimleridir kopyaları bulamaz.

    Ancak, geçerli eşleşen kopyaları çözümde bulmak daha kısa parçaları için.

  • Parçaları ile % 40'dan fazla belirteçleri değişti.

  • Bir proje içeriyorsa, bir .codeclonesettings dosya, o projesinde tanýmlanmýþ öðeleri değil Aranan olarak adlandırılan, kod Exclusions bölümünü .codeclonesettings dosyası.

  • Oluşturulan kod türleri:

    1. *.designer.cs, *.designer.vb

    2. InitializeComponentyöntemleri

    Ancak, bu otomatik olarak oluşturulan tüm koda uygulanmaz.Metin şablonları kullanıyorsanız, örneğin, bunları adlandırma tarafından oluşturulan dosyaları dışarıda isteyebilirsiniz bir .codeclonesettings dosyası.

Kod Kaynağı Klonla analiz kullanıldığı durumlar

Kopyaları bulma genellikle aşağıdaki durumlarda yararlı olacaktır:

  • Varolan bir koda güncelleştirirken. Bir hata düzeltme veya gereksinimleri değişikliklere yanıt, genellikle konumu değiştirmek için gereken kod bularak başlatın.Değişiklik yapmadan önce bu kod parçasının kopyaları için arama yapın.Kopyaları belirlediyseniz:

    1. Her kopyası aynı değişikliği yapmak gerekip gerekmediğine karar verin.

    2. Ayrıca bu paylaştırılmış yöntem veya sınıf klonlanmış kod erişimcilerinden için iyi bir fırsat olup olmadığını göz önünde bulundurun.

  • Mimari temizleme. Her yineleme sonuna doğru kullanmak Kod kopyaları için analiz çözümü üzerinde Analiz menüsü.

  • Ne zaman kodu oluşturun. Yeni kod yazılırken belirtmenizden benzer bir kod bulmak için aracını kullanın.

Büyük kod tabanına klon analiz uygulanıyor

Kod genellikle oldukça ayrı büyük bir projenin bölümleri arasında kopyalanır ve bir kuruluşun farklı bölümlerini çoğunlukla kopyalanır.Çalışmakta olduğunuz değil hemen çözümde yapabildiğiniz gibi bu nedenle büyük olarak kopyaları için kod tabanı bakmanız gerekir.

Kod Kaynağı Klonla Çözümleyicisi kaynak ağacınızı uygulamak için tüm projelerin depodaki içeren bir çözüm oluşturun.

İpucuİpucu

Birden fazla çözüm içindeki bir proje içerebilir unutmayın.Lot kodu kopyaları projelerinin analiz etmek için tüm projeleri içeren bir çözüm oluşturabilirsiniz.Projeleri limanının bunlar genellikle erişilen çözümlerinden kaldırmanız gerekmez.

Oluşturulan kod

Kod Kaynağı Klonla analiz oluşturulan kodu ile iyi çalışmaz.Örne?in:

  • T4 şablonlardan oluşturulan kodu.

    T4 hakkında daha fazla bilgi için, bkz. Kod oluşturma ve T4 metin şablonları.

  • Silverlight gibi bir tasarımcı ya da wpf kullanıcı arabirimi tasarımcıları oluşturulan kodu.

Kod Kaynağı Klonla analiz T4 şablonlardan tarafından oluşturulan dosyaları dışlamak için

  1. Şablonları Visual Studio proje alt dizininde yerleştirin.Örneğin, adı, GeneratedFiles.

  2. Projeye yeni bir metin dosyasý eklemek ve onun adını ve uzantısını değiştirmet4Exclusions.codeclonesettings

  3. Dosyanın içeriği aşağıdaki gibi değiştirin:

    <CodeCloneSettings>
      <Exclusions>
        <File>GeneratedFiles\*.cs</File>
      </Exclusions>
    </CodeCloneSettings>