2010-03-05 2 views
1

생성 된 함수 이름 (사용자 정의 코드 생성 프로세스 사용)의 목록을 가져갈 수있는 작업용 유틸리티를 작성하려고합니다. 특정 솔루션 내의 모든 .cs 파일을 탐색하여 해당 기능이 사용 중인지 확인하십시오. 이 문제를 파악하는 것을 방해하는 가장 어려운 일은 함수가 주석 처리 된 줄 또는 코드 블록 내에 있는지 여부를 결정하는 것입니다. 각 .cs 파일을 반복하면서 함수 이름에 일치하는 스트림 리더를 사용하려고했습니다. 시작하는 것이 좋은 접근 방법입니까?솔루션에서 .cs 파일을 탐색하고 함수가 사용되는지 확인해야합니다.

참고 :이 유틸리티는 다양한 솔루션 파일과 함께 사용할 수 있도록 작성하려는 유틸리티입니다. 우리는 code-gen 유틸리티에서 수천 개의 생성 된 함수를 가지고 있으며 사용되지 않는 함수에 대해보고하려고합니다.

답변

2

코드를 컴파일하고 NDepend과 같은 도구를 사용하여 휠을 다시 만들 필요가 없습니다.

이 프로세스는 CQL (코드 쿼리 언어) 문을 사용하여 매우 잘 자동화 될 수 있습니다.

+0

(난에서 발견 된 함수 호출을 줄 것을보고) 왜냐하면 나는 NDepend 라이센스가 없기 때문이다. 최악의 상황이 악화되면 구매해야 할 수도 있습니다. 좋은 대답은 +1. –

+1

얼마나 자주해야하는지에 따라 다르지만 리플렉터에서 수동으로 그러한 목록을 가져올 수 있습니다. 또는 컴파일 된 어셈블리를 기반으로이 보고서를 생성하는 사용자 지정 반사 도구를 만들 수 있습니다. –

+0

아, 나는 우리가 올바른 길에 있다고 생각합니다. 생성 된 코드는 자체 어셈블리에서 종료됩니다. 어셈블리에서 생성 된 모든 함수 이름 목록을 저장 한 다음 솔루션의 다른 어셈블리를 모두로드하고 생성 된 함수가 호출되는지 확인할 수 있습니다. 난 그냥 어떻게하면 외부 함수 호출을 반사를 통해 이루어집니다 말해 줄 모르겠다 ... –

1

난 항상에 갔어요 :

편집 -> 찾기와 바꾸기 -> 파일에서 찾기.

그러면 창이 열립니다. '찾는 사람'드롭 다운에서 '전체 솔루션'을 선택합니다. 그리고 "Find What"필드에 찾고자하는 것을 입력하십시오.

EDIT : 오, 나는 당신이 리스트 인을 찾고있는 것을 본다. 내 사과. 나는 이것이 단 하나의 항목에 대해서만 작동한다고 생각합니다 ...

+0

여러 솔루션에 걸쳐 사용할 수있는 유틸리티를 작성하고 사용되지 않는 기능을보고 유틸리티를 작성 하여이 과정을 자동화하고자합니다. –

1

csproj 파일은 xml이므로 프로젝트에 나열된 파일 목록을 얻으려면이 파일을 사용할 수 있습니다. 클래스 내의 괄호 밖의 코드를 찾은 다음 수정 자, 구문 유형 및 인수를 구문 분석 한 다음 메서드 이름이 모두있는 각 파일을 검색하여 메소드 이름을 단일화 할 수 있습니다. 처리하기 전에 파일에서 주석을 제거하기위한 보너스입니다.

저는 현재 C 코드와 매우 비슷한 것을하고 있습니다.

는 다음과 나는 (내가 그들이 파일에서 호출하는 경우 상관 통화 목록이있는) 함수 호출을 찾기 위해했던 한 가지가 될 때 :

  1. 실행의 기능 이름에 대한 정규식 정규식이 일치하는 항목을 찾으면 라인으로 파일 라인을 확인
  2. 모든 코멘트 박탈 된 파일은 내가 무료로 해결책을 찾기 위해 바라고
+0

어떻게 모든 댓글을 삭제합니까? –

+0

저는 // 주석을 검색하고/* */comments를 검색하는 정규 표현식을 가지고 있습니다. 누군가가 // * /와 같은 주석을 코드 블록 사이의 전환으로 사용할 때처럼 조심해야하는 경우가 있습니다. 더 나은 해결책은 내가하는 많은 양의 정규 표현식 대신에 파서를 사용하는 것이었지만 원래 어떻게 그것을 작성했는지 다시 작성하는 기회였다. –

관련 문제