코드 복제본 검색을 사용하여 중복 코드 찾기
클론 코드 유사 코드 조각을 별도입니다.일부 시간에 대 한 개발 된 응용 프로그램에는 일반적인 현상으로. 클론을 찾아 여러 단편을 업데이트 해야 하기 때문에 응용 프로그램을 변경 하려면 어려울.Visual Studio 찾기 코드를 리팩터링할 수 있도록이 복제 하는 데 도움이 됩니다.
클론의 특정 부분을 찾기 또는 모든 복제본에서 솔루션 찾기.직접 복사본을 검색 하는 외에 복제 분석 도구 다른 조각 변수 및 매개 변수 이름에 몇 개의 문을 재배열 되어 있어야 볼 수 있습니다.
코드 복제 analyser Visual Studio 솔루션 전체에서 C# 및 Visual Basic 프로젝트에 중복 된 코드를 검색합니다.
클론의 특정 코드 부분을 찾으려면
메서드 또는 get/set 정의 내에 코드 조각 강조 표시 합니다.
[!참고]
문 없습니다 선언 서명 필드, 메서드 또는 속성 등의 복제본을 찾을 수 있습니다.
조각에 대 한 바로 가기 메뉴에서 선택 일치 하는 복제 솔루션에서 찾기.
유사한 방법 또는 솔루션에 이미 있는 조각 인지 여부를 확인 하려면이 메서드를 사용 합니다.
솔루션의 모든 복제본을 찾을 수
- 에 Analyse 메뉴를 선택 코드 클론 분석 솔루션.
이 메서드는 코드를 검토할 때 특히 유용 합니다.
[!참고]
이 명령으로 10 개 이하의 문이 긴 복제를 발견할 수 없습니다.
결과 유사성의 순서로 표시 됩니다.코드 조각이 참조 하는 각 항목을 확장 합니다.
조각에서 사용 되는 로컬 변수 이름이, 다 하 고 몇 가지 명령문을 삽입 하거나 삭제 하는 경우에 유사성 검색 됩니다.
복제 비교
에 복제 결과 코드 창에서 두 파일 또는 두 파일 포함 된 복제 그룹을 선택 합니다.
선택 비교 바로 가기 메뉴에서.
이 기능은 같은 비교 도구를 사용 하 여 소스 제어 버전을 비교 하는 데 사용 되는.변경 하려면 선택 옵션 에서 도구 메뉴.확장 소스 제어 및 Visual Studio Team Foundation Server.선택 사용자 도구 구성 다음 추가.
특정 파일 또는 메서드는 분석에서 제외.
제외 하려는 메서드 정의 Visual Studio 프로젝트에 새 XML 파일을 추가 합니다.
파일이 프로젝트의 일부 인지 여부는 중요 하지 않습니다.이 프로젝트의 상위 디렉터리에 있어야 합니다.
파일 이름 확장명을 변경 합니다..codeclonesettings
다음 예제와 같이 파일의 내용을 편집 합니다.
<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>
복제 코드를 찾을 수 있습니다.
코드 클론 분석 "near miss" 복제본을 찾을 수 있습니다.
코드에서 코드를 복사한 다음 새 위치에 맞게 개발자가 자주 결과 복제 합니다.따라서 분석기 복제를 찾으려면 오류가 발생 하기 전에 설정할 수 있는 변경의 정도 고려 하는 것이 가장 좋습니다.다음과 같은 수정 작업을 만들 수 있습니다, 그리고 및 복제 여전히 인식 합니다.각각의 경우에 있을 허용 오차를 특정 수정 횟수:
식별자를 이름을 바꿉니다.
삽입 및 삭제 합니다.
문을 다시 정렬 합니다.
어떤 복제 찾을 수 없습니다.
형식 선언을 비교 됩니다.두 클래스와 매우 유사한 집합 필드 선언의 경우 예를 들어, 이들은 클론으로 보고 되지 않습니다.
메서드 및 속성 정의 명령문만 비교 됩니다.
솔루션 코드를 복제에 대 한 분석 10 개 이하의 문을 오래 된 복제본 검색 되지 않습니다.
그러나 적용할 수 있는 일치 하는 복제 솔루션에서 찾기 짧은 조각으로.
40% 이상 조각 토큰 변경 합니다.
프로젝트에 포함 되어 있는 경우는 .codeclonesettings 파일을 해당 프로젝트에 정의 된 요소에 이름이 있는 경우 없습니다 검색 됩니다 코드는 Exclusions 부분은 .codeclonesettings 파일.
생성 된 코드의 일부.
*.designer.cs, *.designer.vb
InitializeComponent 메서드
그러나이 자동으로 생성 된 모든 코드에 적용 되지 않습니다.텍스트 템플릿을 사용 하는 경우 예를 들어, 생성 된 파일에 이름을 지정 하 여 제외할 수 있는 .codeclonesettings 파일.
복제 코드 분석을 사용 하는 경우
클론 찾기는 다음 경우에 일반적으로 유용 합니다.
기존 코드를 업데이트 하는 경우. 버그를 수정 하거나 변경 요구에 응답 하지는 일반적으로 변경 해야 할 코드의 위치를 찾아 시작 합니다.변경 하기 전에 해당 코드 세그먼트의 클론을 검색 합니다.복제본 발견 되는 경우:
각 복제본에 동일한 변경 해야 하는지 여부를 고려해 야 합니다.
또한 공유 메서드나 클래스에는 복제 된 코드를 리팩터링 하는 좋은 기회 인지 고려해 야 합니다.
아키텍처 정리 합니다. 모든 반복 끝 쪽으로 사용 코드 클론 분석 솔루션 에 있는 분석 메뉴.
코드를 만들 때. 새 코드를 작성 하는 경우 이미 비슷한 코드를 찾으려면 도구를 사용 합니다.
대규모 코드 기반으로 클론 분석 적용
코드는 별도 매우 큰 프로젝트를 부분 사이 복사 됩니다 및 조직의 다른 부분에 복사 되는 경우가 많습니다.작업 중인 즉시 솔루션에서 뿐 아니라 수 있으므로 보다 크게 복제에 대 한 코드 베이스를 확인 해야 할.
소스 트리를 통해 코드 클론 분석 프로그램을 적용 하려면 모든 저장소에 프로젝트를 포함 하는 솔루션을 만듭니다.
팁 |
---|
둘 이상의 솔루션에서 프로젝트를 포함할 수 있다는 점을 기억 하십시오.많은 복제 코드에 대 한 프로젝트를 분석 하려면 모든 프로젝트를 포함 하는 솔루션을 만들 수 있습니다.프로젝트는 일반적으로 액세스 되는 솔루션에서 제거할 필요가 없습니다. |
생성된 코드
생성 된 코드로 코드 클론 분석을 사용할 수 없습니다.예를 들면 다음과 같습니다.
T4 템플릿을 생성 하는 코드입니다.
T4에 대 한 자세한 내용은 코드 생성 및 T4 텍스트 템플릿.
같은 Silverlight 디자이너 또는 WPF 사용자 인터페이스 디자이너에서 생성 한 코드입니다.
T4 템플릿 코드 클론 분석에서 생성 된 파일을 제외 하려면
템플릿은 Visual Studio 프로젝트의 하위 디렉터리에 배치 합니다.예를 들어, 이름을 GeneratedFiles.
새 텍스트 파일을 프로젝트에 추가 하 고 이름 및 확장명을 변경 합니다.t4Exclusions.codeclonesettings
파일의 내용을 다음과 같이 변경 합니다.
<CodeCloneSettings> <Exclusions> <File>GeneratedFiles\*.cs</File> </Exclusions> </CodeCloneSettings>