파일에서 함수를 추출하는 방법은 무엇입니까? [폐쇄]

파일에서 함수를 추출하는 방법은 무엇입니까? [폐쇄]

내 코드에서 C 함수를 추출하는 명령을 찾고 있습니다. 다음과 같이 보일 것입니다:

$ grep -func "MyFunction" foo.c

int MyFunction(int i) {
    return i+1;
}

정규식으로 추출할 수 있다는 것을 알고 있지만 좀 더 사용자 친화적인 방법을 찾고 있습니다.

답변1

파일의 구문이 정확하다고 가정하면 다음 형식을 사용하여 형식을 지정 indent하고 함수를 찾고 추출하는 프로세스를 훨씬 간단하게 만들 수 있습니다.

  • 를 사용하면 indent줄의 첫 번째 열에 함수 이름을 입력하고 그 뒤에 여는 괄호를 입력한 다음
  • 그 후 '}'첫 번째 열에 나타나는 다음 닫는 중괄호가 함수를 종료합니다.

indent다음은 GNU sum을 사용한 간단한 예입니다 awk.

#!/bin/sh
# $1 = file name
# $2 = function name
indent -st -orig "$1" | awk '
BEGIN { state = 0; last = ""; }
$0 ~ /^'$2'\(/ { print last; state = 1; }
        { if (state == 1) print; }
$0 ~ /^}/ { if (state) state = 2; }
        { last = $0; }
'

답변2

함수 헤더만 필요한 경우 다음을 사용할 수 있습니다 ctags.

$ ctags -x foo.c
MyFunction         1 foo.c            int MyFunction(int i) {

관련 정보