2012-10-01 2 views
3

요약 : 코드베이스 내에서 실제로 호출되고 사용되는 데이터베이스 API 메소드의 목록을 가져와야합니다.API 내에서 호출 된 메소드 목록을 얻는 방법

더 길다 : 우리는 아주 (ugly) 데이터베이스 API를 기반으로하는 아주 큰 코드 기반을 가지고 있습니다. 후자는 많은 인터페이스와 꽤 큰 기능 세트를 가지고 있습니다. 우리는 전혀 필요하지 않으며 우리는 그것을 제거하고 싶습니다. 다시 쓰기의 첫 번째 프로토 타입은 기존 API 코드와 100 개 호환되어야합니다. 따라서 프로덕션 코드에 맞춰 인터페이스를 쉽게 구현할 수 있도록 인터페이스를 구현해야합니다.

우리가 사용하는 방법의 하위 집합을 정의하기 위해 dotCover 또는 다른 것으로 일부 범위 분석을 수행하고 단위 테스트를 실행할 수 있지만 이것이 80-90 %의 성공률만을 산출 할 것이라고 확신합니다. 내가 필요한 것은 우리 코드의 정적 분석과 더 비슷합니다. 또 다른 접근법은 API 사용을위한 동적 래퍼가 될 수 있습니다.

이러한 분석을 도구로 수행 할 수 있는지 또는 필요한 정보 (수동/자동? 정말 크고 수백 또는 수천 가지 방법)를 얻기 위해 API를 포장해야하는지 궁금했습니다.

모든 소스에 액세스 할 수 있지만 자신의 솔루션으로 많은 모듈에 배포됩니다.

+0

100 % 중복인지 확실하지 않습니다. 그러나 http://stackoverflow.com/questions/245963/find-unused-code를 검토 할 수 있습니다. Resharper를 얻는 것만 큼 짧습니다. – NotMe

+0

그것은 100 % 반대입니다, 제 생각에는 :) ReSharper는 (각각의 모든 방법에 대해 "find usages"를 클릭하는 것 외에는) 도움이되지 않습니다. – Matten

+0

좋아요, Resharper에 익숙하지 않습니다. 또 다른 옵션은 NDepend (http://www.ndepend.com/)입니다. – NotMe

답변

2

Chris가 정밀화 한 것처럼 NDepend는 호출 된 API 메소드/필드/유형의 목록을 제공 할 수 있습니다. 면책 조항 : 본인은이 도구의 개발자 중 한명입니다.

는 그림이 천 개 단어의 가치 인 아래 NDepend dependency structure matrix 화면은, 도시 그 NUnit를 코드베이스 만 어셈블리 nunit.uiexcepion(행/열 # 6)nunit.core.interfaces(행/열 # 18) 방법 List<T>.ToArray()을 사용하고 있습니다. 우리가 타사 코드를 호출이 (당신이라는 API를 부르는 것), 파란색 글꼴로 표시되어 어떤

. API 메소드/필드/유형 만 실제적으로이 사용되었습니다. 스크린 샷과 같이, 클래스 HashSet<T>은 NUNit 코드베이스에서 사용되지 않기 때문에 표시되지 않습니다.

NDepend의 모든 기능은 타사 코드을 고려하지만 에 가장 적합한 기능이 API 내에서 호출 방법의 목록을 확실히 때문에 나는 여기에 의존 구조 매트릭스를 노출합니다. 이 도구의 14 일 전 기능 시험 버전은 available for download입니다. 당신이 당신의 코드베이스의 2 개 개의 다른 스냅 샷을 비교할 때 NDepend 또한, what third-party code is not used anymore, or was not used and is now used을 보여줄 수

NDepend dependency structure matrix

하자 참고. 아래의 스크린 샷에서 우리는 NUnit v2.5.8에서 사용하지 않는 타사 메서드를 볼 수 있습니다.

NDepend search methods by change

+0

정확히 무엇이 필요한지, 빠른 소개를 해주셔서 감사드립니다. 우리는 NDepend에 대한 라이센스조차 가지고있었습니다. 행렬을 .pdf로 내보내거나 인쇄하는 옵션이 있습니까? 긴 목록이고 .png 내보내기가별로 도움이되지 않습니다. – Matten

+0

지금까지는 매트릭스를 PNG로만 가져올 수 있습니다. 그러나 ThirdParty.Methods에서 m과 같은 코드 쿼리를 작성하여 코드 조회 결과 패널에서 다른 내보내기 (txt, xml, xls, html)를 얻으려면 new {m, m.MethodsCallingMe} *를 선택하십시오. –

1

나는 화면 지향-프로그래밍 (AOP)의 상단에 레이어를 만드는 데 사용되는 다양한 IL-직조 구현 중 하나를 살펴 것입니다.너 I, I는 하나의 '로거 같은 "측면을 만들고 싶은 경우에, 당신이 원하는 모든 방법으로 그 부분을 짜

http://www.sharpcrafters.com/solutions/logging#

: - NET PostSharp는 쉽게 마음에 점프 하나입니다 카탈로그 사용법. 그런 다음 잠깐 보행을 통해 실행하십시오. 이런 식으로 사용량 데이터를 수집하면 안전하게 제거 할 수있는 정보를 얻을 수 있습니다.

이 접근법의 장점 중 하나는 컴파일 타임 바인딩 호출이 아닌 모든 "동적"또는 메소드의 메타 호출을 포착한다는 것입니다.

관련 문제