Resharper- 사용하지 않은 모든 클래스 찾기


122

파일을 마우스 오른쪽 버튼으로 클릭하고 "사용 찾기"옵션을 선택하여 단일 파일의 사용되지 않은 참조를 찾는 방법을 알고 있습니다. 내 프로젝트에서 사용하지 않는 모든 클래스 또는 파일 목록을 보거나 가져올 수있는 방법이 있습니까?


2
나는 과거에 이것을 위해 ndepend를 사용했습니다.
Cine 2011 년

답변:


195

먼저 "솔루션에서 오류 분석"을 활성화합니다 (상태 표시 줄에서 Resharper 아이콘을 마우스 오른쪽 버튼으로 클릭).

그런 다음 솔루션 노드를 마우스 오른쪽 단추로 클릭하고 "코드 문제 찾기"를 선택합니다. "검사 결과"도구 창에서 "문제 유형"별로 그룹화하고 "유형 또는 유형 멤버가 사용되지 않음"을 찾아 사용하지 않는 모든 클래스 (및 더 많은 사용되지 않은 기호)를 가져올 수 있습니다.

두 번째 옵션 ( "솔루션에서 오류 분석"을 활성화 한 후)은 사용하지 않는 클래스로 이동하여 Alt + Enter를 누르고 " '유형 또는 유형 멤버 ...'검사 옵션"을 선택하는 것입니다. 이 유형의 모든 코드 문제 찾기 | 전체 솔루션.

검사 결과 창 샘플


41
사용하지 않는 클래스 / 메소드는 "심볼 선언의 중복"아래 "유형 또는 유형 멤버가 사용되지 않음"아래에 표시됩니다. 이것이 버전 변경 때문인지 확실하지 않거나 다르게보고 있습니다.
괴롭힘

4
이것은 Windows 8의 VS2013 또는 Windows 7의 VS2012에서 Resharper 7.1을 사용하는 카테고리에서 사용하지 않는 클래스를 반환하지 않았습니다.
Sam Jones

1
최소한 ReSharper 8에서는 결과를 얻기 위해 "솔루션의 오류 분석"을 활성화 할 필요가 없습니다.
Pieter van Ginkel

@SamJones : 맞아요 .. Resharper 8.1에서 사용하지 않는 클래스도 반환하지 않습니다 ...
Revious

3
Resharper 10 :이 보고서는 사용하지 않은 클래스를 표시하지 않습니다. 해결 방법 : 코드에서 사용되지 않는 클래스를 찾아 "솔루션에서 유사한 문제 찾기"를 수행합니다.
altumano

17

@ulrichc의 솔루션은 완벽하게 들리며 Castle 또는 Ninject 와 같은 종속성 주입 프레임 워크를 사용하지 않는 중소 규모 프로젝트에서 잘 작동 하지만 DI 컨테이너 [예 : Castle]를 사용하고 다음과 같은 것이있는 경우 :

public class IoC
{
    private WindsorContainer _container;

    private IoC()
    {
         _container = new WindsorContainer();
    }

    public static void RegisterFromAssembly(Assembly assembly, string classEndsWith, LifeTime lifeTime)
    {
        var lifestyle = ConvertLifeStyleType(lifeTime);

        _container.Register(AllTypes.FromAssembly(assembly)
                  .Where(type => type.Name.EndsWith(classEndsWith))
                  .WithService.AllInterfaces()
                  .Configure(c => c.LifeStyle.Is(lifestyle))
                  .WithService.FirstInterface());
    }
}

보시다시피 RegisterFromAssembly는 어셈블리 내부의 모든 형식을 통과하고 [메서드 매개 변수를 기반으로] 맹목적으로 런타임에 컨테이너에 추가합니다.

컨테이너 내에서 등록되거나 해결 된 유형에 대한 탐색을 제공하는 Agent Mulder 플러그인 과 같은 것이 필요 합니다. 이것은 다시 시각적으로 [디자인 타임] 작동 할 수 있지만 사용하지 않는 클래스를 제거 할 때마다 애플리케이션 (가능한 모든 계층) 내에서 모든 테스트를 실행하여 80 % 안전하다고 확신하지 않는 한 확실하지 않습니다. 이야기의 도덕 : 클래스는 Resharper에 익숙하지 않은 것처럼 들릴 수 있지만 Dependency Injection을 사용하면 부활 할 수 있습니다.


3
DI뿐만 아니라 리플렉션을 사용하면 솔루션이 실패 할 수 있습니다.
Mohayemin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.