Udostępnij za pośrednictwem


Znajdowanie powielanie kodu za pomocą kodu klon wykrywania

Kod klonów są oddzielne fragmentów kodu, które są bardzo podobne.Są one wspólne zjawisko w aplikacji, która została opracowywane przez pewien czas. Klony utrudnić zmienić aplikacji, ponieważ trzeba znaleźć i zaktualizować więcej niż jeden fragment.Visual Studio może pomóc znaleźć kod klonów, tak aby poprawiać pewne je.

Można znaleźć określonego fragmentu klonów lub znaleźć rozwiązanie wszystkich klonów.Oprócz discovering kopie bezpośrednie, narzędzie analizy powielania można znaleźć fragmenty, które różnią się w nazwach zmiennych i parametrów i w którym niektóre oświadczenia mają zostały nierozerwalnie.

Analizator klon kod przeszukuje zduplikowane kodu Visual C# i Visual Basic projektów całej rozwiązania programu Visual Studio.

Kod wyniku analizy klon silny meczów

Aby znaleźć klonów fragment kodu w szczególności

  1. Podświetl fragment kodu w metodzie ani definicji get i set.

    [!UWAGA]

    Klony oświadczenia, ale nie deklaracje jak podpisy pola, metody lub właściwości można znaleźć.

  2. W menu skrótów dla fragmentu wybierz znaleźć pasujące klonów w roztworze.

Tej metody należy użyć, gdy użytkownik chce wiedzieć, jeśli istnieje metoda podobne lub fragmentu istniejących w rozwiązanie.

Aby znaleźć wszystkie klonów w roztworze

  • Na analizy menu wybierz Analizować rozwiązanie dla kodu klonów.

Ta metoda jest szczególnie użyteczna gdy przeglądane są kodu.

[!UWAGA]

Klony, które są mniej niż 10 instrukcji długich nie są wykrywane przez to polecenie.

Wyniki są prezentowane w kolejności podobieństwa.Rozwinięcie każdego elementu, aby zobaczyć fragmentów kodu.

Należy zauważyć, że podobieństwa są wykrywane, nawet jeśli zmiennych lokalnych, które są używane przez fragmenty mają różne nazwy, a nawet jeśli kilka instrukcji został wstawiony lub usunięty.

Aby porównać klonów

  1. W Kod klon wyniki okna, zaznacz dwa pliki lub grupy powielania, który zawiera dwa pliki.

  2. Wybierz porównać z menu skrótów.

Funkcja ta używa tego samego narzędzia porównanie jest używane do porównywania wersji pod kontrolą źródła.Aby go zmienić, wybierz polecenie Opcje z Narzędzia menu.Rozwiń Kontrola źródła i programu Visual Studio Team Foundation Server.Wybierz skonfigurować użytkownika narzędzia a dodać.

Aby wykluczyć określone pliki lub metod analizy

  1. Dodaj nowy plik XML do projektu programu Visual Studio, w której są zdefiniowane metody, które chcesz wykluczyć.

    Nie ma znaczenia, czy plik jest częścią projektu.Musi być w górnym katalogu projektu.

  2. Zmień rozszerzenie nazwy pliku do.codeclonesettings

  3. Edytować zawartość pliku on podobny do poniższego.

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

Jakiego klonów zostanie znalezione?

Code analyzer klon znajdzie klonów "near miss".

Kod klonów często wynikiem deweloperom Kopiowanie kodu i dostosowania go do nowej lokalizacji.Dlatego najłatwiej jest rozważenie stopnia zmiany można dokonane przed Analizator nie odnajdzie klonu.Następujące modyfikacje mogą być wprowadzane i klonu nadal będzie rozpoznawany.W każdym przypadku jest tolerancji określoną liczbę takich modyfikacji:

  • Zmień nazwę identyfikatorów.

  • Wstawianie i usuwanie instrukcji.

  • Ponowne rozmieszczanie instrukcji.

Hh205279.collapse_all(pl-pl,VS.110).gifCo duplikatów nie zostanie znaleziona?

  • Deklaracje typu nie są porównywane.Na przykład jeśli masz dwie klasy z bardzo podobne zestawy pola deklaracji one nie będzie raportowana jako klonów.

    Tylko sprawozdań w zakresie metod i definicji właściwości są porównywane.

  • Analizować rozwiązania dla kodu klonów nie znajdzie klonów, które są mniej niż 10 instrukcji długa.

    Można jednak zastosować znaleźć pasujące klonów w roztworze do fragmentów krótszy.

  • Fragmenty z więcej niż 40% zmienione tokenów.

  • Jeśli projekt zawiera .codeclonesettings pliku kod elementy, które są zdefiniowane w tym projekcie nie będzie przeszukiwana, jeśli są one nazwane w Exclusions sekcji .codeclonesettings pliku.

  • Niektóre rodzaje wygenerowany kod:

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

    2. InitializeComponentmetody

    Jednak to nie stosuje się automatycznie do wszystkich wygenerowany kod.Na przykład użycie szablonów tekstu może chcesz wykluczyć wygenerowane pliki nazywając je .codeclonesettings pliku.

Kiedy używać kodu klonowanie analizy

Znajdowanie klonów jest szczególnie użyteczna w następujących przypadkach:

  • Podczas aktualizowania istniejącego kodu. Podczas ustalania błędu, lub reagowanie na zmiany w wymogach, zwykle start przez wyszukiwanie lokalizacji w kodzie, który chcesz zmienić.Przed wprowadzeniem zmian wyszukiwania klonów segmentu kodu.Jeśli zostaną wykryte klonów:

    1. Należy rozważyć, czy należy wprowadzić tę samą zmianę do każdego klonu.

    2. Również rozważyć, czy jest to dobra okazja do byłaby sklonowany kodu do udostępnionej metody lub klasy.

  • Oczyszczanie architektury. Pod koniec każdej iteracji, użyj Analizować rozwiązanie dla kodu klonów na Analizuj menu.

  • Podczas tworzenia kodu. Zapisywanych nowy kod narzędzie Znajdź podobny kod, który już istnieje.

Stosowanie klonowanie analizy base kod duże

Kod jest często kopiowana między częściami oddzielone dużego projektu i często są kopiowane do różnych części organizacji.Należy dlatego szukać klonów w jako dużą bazę kodu jak to możliwe, nie tylko natychmiastowe rozwiązanie problemu, na którym pracujesz.

Stosowano code analyzer klon drzewo źródła, należy utworzyć rozwiązanie, które zawiera wszystkie projekty w repozytorium.

PoradaPorada

Należy pamiętać, dołączyć projekt więcej niż jednego rozwiązania.Analizować wiele projektów dla kodu klonów, można utworzyć rozwiązanie, które obejmuje wszystkie projekty.Nie trzeba usunąć projektów z rozwiązań, które zazwyczaj są dostępne.

Wygenerowany kod

Kod klonowanie analizy nie działa dobrze z wygenerowany kod.Na przykład:

  • Kod wygenerowany z szablonów T4.

    Aby uzyskać więcej informacji na temat T4 zobacz Kod generacji i szablony tekst T4.

  • Kod wygenerowany z projektanta jak dodatku Silverlight lub projektantów interfejsu użytkownika WPF.

Aby wykluczyć pliki generowane przez T4 szablony z kodu klonowanie analizy

  1. Szablony należy umieścić w katalogu sub projektu Visual Studio.Nazwę, na przykład GeneratedFiles.

  2. Dodać nowy plik tekstowy do projektu i zmienić jego nazwę i rozszerzeniet4Exclusions.codeclonesettings

  3. Zmień zawartość pliku w następujący sposób:

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