C# 앱에서 참조되지 않은 함수(죽은 코드, 사용되지 않는 코드)를 찾는 도구가 있나요?[닫은]

StackOverflow https://stackoverflow.com/questions/65585

  •  09-06-2019
  •  | 
  •  

문제

foo()가 어디서도 호출되지 않으면 foo()를 삭제하고 싶습니다.

도움이 되었습니까?

해결책

헌병 업스트림 호출자가 없는 개인 메소드를 감지합니다.크로스 플랫폼으로 사용 가능하며 최신 버전에서는 "UncalledPrivateCodeRule 방지".

FxCop 업스트림 호출자가 없는 공개/보호된 메소드를 감지합니다.그러나 FxCop은 업스트림 호출자가 없는 모든 메서드를 감지하지 못합니다. 이는 코드가 라이브러리의 일부인지 확인하기 위한 것이므로 공용 멤버는 제외됩니다. NDepend를 사용하여 업스트림 호출자가 없는 공개 멤버를 검색할 수 있습니다. 이에 대해서는 다른 StackOverflow 답변에서 자세히 설명합니다..

(편집하다:질문자가 요청한 것을 실제로 수행하는 Gendarme에 대한 정보를 추가했습니다)

다른 팁

N종속 잠재적으로 사용되지 않는 코드에 대해서도 보고합니다.

메소드가 표시된 경우 Resharper(및 기타 유사한 도구)는 사용되지 않은 메소드를 강조 표시하지 않는다는 점을 명심하십시오. public.정적 코드 분석 도구에서는 어셈블리 메서드가 솔루션 외부의 다른 어셈블리에서 사용되는지 여부를 확인할 수 있는 방법이 없습니다.따라서 사용되지 않는 메서드를 제거하는 첫 번째 단계는 해당 메서드의 가시성을 줄이는 것입니다. private 또는 internal.

예, MZ-도구 추가 기능에는 데드 코드 검토 기능이 있습니다.

리샤퍼 이는 단지 메소드만으로 이루어지는 것이 아닙니다.또한 명령문, 변수 등을 사용하여 이를 수행합니다.

도구 N종속 .NET 코드 베이스에서 사용되지 않는 코드를 찾는 데 도움이 될 수 있습니다. 부인 성명:저는 이 도구의 개발자 중 한 명입니다.

NDepend는 글쓰기를 제안합니다 LINQ 쿼리에 대한 코드 규칙(CQLinq).약 200개의 기본 코드 규칙 제안되었으며 그 중 3개는 사용되지 않은/데드 코드 발각:

NDepend는 Visual Studio에 통합되어 있으므로 이러한 규칙은 IDE 내에서 바로 확인/탐색/편집 가능.이 도구는 CI 프로세스에 통합될 수도 있으며, 보고서 위반된 규칙과 범인 코드 요소가 표시됩니다.

이 규칙의 소스 코드에 대한 3개의 링크를 클릭하면 유형 및 메소드에 관한 항목이 약간 복잡하다는 것을 알 수 있습니다.이는 사용되지 않는 유형 및 메소드뿐만 아니라 사용된 유형 및 메소드도 감지하기 때문입니다. 오직 사용되지 않은 데드 유형 및 방법별(재귀적)

이것은 정적 분석, 따라서 접두사 잠재적으로 규칙 이름에.코드 요소가 사용되는 경우 오직 반영을 통해 이러한 규칙은 이를 사용되지 않은 것으로 간주할 수 있지만 그렇지 않습니다.

이 3가지 규칙을 사용하는 것 외에도 테스트를 통해 코드 적용 범위를 측정하고 전체 적용 범위를 확보하도록 노력하는 것이 좋습니다.종종 테스트로 다룰 수 없는 코드가 실제로는 미사용/죽음 안전하게 폐기할 수 있는 코드입니다.이는 코드 분기에 도달할 수 있는지 여부가 명확하지 않은 복잡한 알고리즘에 특히 유용합니다.

VS가 기본적으로 이 작업을 수행하지 않는 경우 간단한 방법은 메서드를 마우스 오른쪽 버튼으로 클릭하고 "모든 참조 찾기"를 선택하는 것입니다.참조가 1개(선언된 경우)만 있는 경우 다른 곳에서는 사용되지 않을 가능성이 높습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top