2009-03-05 5 views
6

Visual Studio 2005에서 C# 응용 프로그램이 있습니다. 코드에 약 300 개의 KLOC가 있으며 3 년 동안 악용되었습니다.원치 않는 코드 정리 C#

코드를 통해 사용하지 않은 함수/메소드/속성이 많이 발견되었습니다. 수동으로 코드를 정리할 수 없습니다 (각 멤버를 확인해야하며 참조가 없으면 찾을 수 없습니다).

VS 매크로를 사용하면이 작업을 자동화 할 수 있습니다. 참조를 찾지 못하면 참조를 가지고 있지 않으며, 호출 멤버 일 경우 호출 멤버의 참조를 확인하고, 둘 다 삭제해야하는 참조는 없다.

나는 이전에 금이 갔을 것이라고 확신한다.

+1

바라건대,이 앱은 리플렉션을 사용하여 메소드를 호출하지 않기를 바랍니다. – kenny

답변

13

Resharper에는 코드 정리 기능이 있으며 어떤 메소드/클래스가 사용되고 있지 않은지 알 수 있습니다.

+0

자동화 된 것인지 확실하지 않은 경우 ... Resharper는 메서드에 참조가 있는지 여부를 나타냅니다. –

4

NDepend으로 코드베이스를 쿼리하면 CQL을 사용하여 어떤 메소드와 클래스가 사용되지 않는지 확인할 수 있습니다.

+0

NDepend는 가장 많이 사용되는 유형, 유형 간 의존성, 직접 및 간접적 의존성, 유형 및 방법의 측정 된 복잡성 등에 대한 정보를 제공하여 코드베이스를 이해하는 데 도움을줍니다. – flq

0

1 차 사용은 다른 샤프가 다시 제안했습니다.

Resharper는 공용 메서드가 외부 어셈블리에 의해 사용되는 것으로 가정하므로 public 어셈블리를 검색하고 "public"을 "private"로 바꾸고 다시 컴파일하십시오.

4

리플렉션을 통해 호출되는 코드에주의하십시오. 많은 리팩토링 도구는 실제로이 코드가 액세스 될 때이 코드에 플래그를 지정합니다.

리팩토링 전후의 단위 테스트를 실행하는 것이 가장 안전합니다. 모든 것이 여전히 작동하는지 확인하십시오.

0

Gendarme (FxCop과 같은)을 사용하여 어떤 코드가 호출되지 않았는지 확인했습니다. AFAIK는 자동화 될 수 없지만 적어도 줄 단위로 갈 필요는 없습니다.