Zjištění kódu duplikovat pomocí kódu klonování zjišťování
Kód klonů jsou samostatné fragmenty kódu, které jsou velmi podobné.Jsou běžné jev v aplikaci, která byla ve vývoji určitou dobu. Klony je těžké změnit aplikace, protože je nutné nalézt a aktualizovat více než jeden fragment.Visual Studio můžete najít klonuje kód tak, aby bylo možné refactor je.
Můžete najít klony konkrétní fragmentu nebo najít všechny klony v řešení.Kromě zjištění přímé kopií, analytický nástroj klonovací najdete fragmenty, které se liší názvy proměnných a parametry a které mají některé příkazy změněno.
Klonování analyzátoru kódu hledá duplicitní kódu v aplikaci Visual C# a Visual Basic projektů v rámci řešení Visual Studio.
Najít klony zejména fragmentu
Zvýrazněte fragment kódu v rámci metody nebo definice get a set.
[!POZNÁMKA]
Můžete najít klony příkazy, ale není prohlášení jako podpis pole, metodu nebo vlastnost.
Zvolte v místní nabídce fragment, Najít odpovídající klonů v roztoku.
Tuto metodu použijte, pokud chcete vědět, pokud je podobné metody nebo fragment stávajících v řešení.
Vyhledání všech klonů v roztoku
- Na Analyse nabídce zvolte Řešení analyzovat kód klonů.
Tato metoda je zvláště užitečná, když chcete zobrazit kód.
[!POZNÁMKA]
Tento příkaz nejsou zjištěny klonů, které jsou menší než 10 prohlášení dlouhé.
Výsledky jsou uvedeny v pořadí podle podobnosti.Rozbalte každou položku zobrazit fragmenty kódu.
Všimněte si, že podobnosti jsou zjištěny i v případě místní proměnné, které jsou používány úlomky různé názvy a to i v případě, že několik příkazy byly vloženy nebo odstraněny.
Porovnat klonů
V Kód klonování výsledky okna, vyberte dva soubory nebo klonování skupinu, která obsahuje dva soubory.
Zvolte Porovnat z místní nabídky.
Tato funkce používá stejný nástroj porovnání slouží k porovnání verzí ve správě zdrojů.Pokud chcete změnit, zvolte Možnosti z Nástroje nabídce.Rozbalte ovládacího prvku zdrojového a Visual Studio Team Foundation Server.Zvolte Konfigurace uživatele nástroje a Přidat.
Z analýzy vyloučit určité soubory nebo metody
Přidáte nový soubor XML do projektu Visual Studio, ve kterém jsou definovány metody, které chcete vyloučit.
Nezáleží, zda je soubor součástí projektu.Musí být v adresáři začátek projektu.
Změna přípony názvu souboru.codeclonesettings
Upravte obsah souboru tak, aby jej následujícímu příkladu.
<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>
Jaké klonuje budou nalezeny?
Code analyzer klonování najdete "near Paní" klonů.
Kód klonuje často výsledkem vývojářům kopírování kódu a přizpůsobit ji na nové místo.Proto je nejjednodušší zvažte stupeň změny lze provést před analyzátoru nepodaří najít klon.Následující úpravy lze provést a klon bude stále rozpoznán.V každém případě je tolerance určitý počet takových změn:
Přejmenování identifikátorů.
Vkládat a odstraňovat příkazy.
Přeuspořádat příkazy.
Co duplicity nebude nalezena?
Deklarace typu srovnání.Například pokud máte dvě třídy sadami velmi podobné prohlášení pole, se nemá hlásit jako klony.
Příkazy pouze v metodách a definice vlastností jsou porovnány.
Analyzovat řešení pro kód klonuje klonů, které jsou menší než 10 prohlášení dlouhé nenajde.
Můžete však použít Najít odpovídající klonů v roztoku na kratší fragmenty.
Fragmenty s více než 40 % změněn tokeny.
Pokud projekt obsahuje .codeclonesettings souboru prvky, které jsou definovány v tomto projektu nebudou prohledány, pokud jsou pojmenovány v kódu Exclusions část .codeclonesettings souboru.
Některé druhy generovaný kód:
*.designer.cs, *.designer.vb
InitializeComponentmetody
Ale to neplatí automaticky generovaného kódu.Například pokud používáte text šablony, můžete chtít vyloučení vygenerované soubory v jejich názvů .codeclonesettings souboru.
Použití kódu klonování analýzy
Hledání klony je obvykle vhodná v následujících případech:
Když aktualizujete existující kód. Při stanovení chyby, nebo reagovat na změny požadavků, obvykle začněte hledání umístění v kódu, který chcete změnit.Před provedením změny, Hledat klonů tohoto kódu segmentu.Pokud jsou zjištěny klony:
Zvažte, zda je nutné provést stejnou změnu každého klonování.
Zvažte také, zda je dobrou příležitostí k refactor Klonovaný kód do sdílené metody nebo třídy.
Architektonické vyčištění. Ke konci každé iteraci pomocí Řešení analyzovat kód klonů na analyzovat nabídce.
Při vytváření kódu. Pokud jste napsali nový kód, nástroj Najít podobné kód, který již existuje.
Použití analýzy klonování základ velké kódu
Kód zkopírován často mezi zřetelně oddělené části velký projekt a často je zkopírován do různých částí organizace.Měli byste proto hledat klonů se jako velké základní kód jako, nejen v okamžité řešení, na kterém pracujete.
Použít code analyzer klonování ve zdrojovém stromu, vytvořte řešení, která obsahuje všechny projekty v úložišti.
Tip
Nezapomeňte, že můžete projektu zahrnout více řešení.Analyzovat velké projekty klony kód, můžete vytvořit řešení, která zahrnuje všechny projekty.Není třeba odebrat projekty z řešení, jejichž prostřednictvím jsou obvykle přístupné.
Generovaný kód
Kód analýzy klonování s generovaný kód nefunguje.Příklad:
Kód generovaný z T4 šablon.
Další informace o T4 viz Kód generace a Text šablony T4.
Kód generovaný z Návrháře rozhraní WPF uživatel nebo návrhář například Silverlight.
Vyloučit soubory generované T4 klonovat z kódu šablony analýzy
Umístěte šablony podřízeného adresáře projektu aplikace Visual Studio.Název, například GeneratedFiles.
Do projektu přidat nový textový soubor a změnit jeho název a rozšířenít4Exclusions.codeclonesettings
Změňte obsah souboru takto:
<CodeCloneSettings> <Exclusions> <File>GeneratedFiles\*.cs</File> </Exclusions> </CodeCloneSettings>