문제

정적 소스 코드가있는 C ++ 파일의 팩을 얻었습니다 (이미 개발되었지만 아무것도 할 필요는 없습니다).

해당 파일 중 하나와 함께 각 함수의 매개 변수 목록을 얻는 프로그램/lib/방법이 있습니까?

내 말은 다음과 같은 결과를 얻습니다.

#File a.cpp
##a() -> 3 paramss
##foo() -> 0 params (void)

#File b.cpp
##test() -> 1 param

....

그리고 더 나은 질문.

수익 수를 처리 할 수있는 방법이 있습니까?

#File a.cpp
##a() -> 3 params, 1 return
##foo() -> 0 params (void), 2 returns

예를 들어 "foo"가 조건이 true 인 경우 리턴이 있고 다른 경우 거짓 인 경우

미리 감사드립니다.

도움이 되었습니까?

해결책

당신은 달리기를 시도 할 수 있습니다 독사 소스 파일을 통해.

콘텐츠는 (아마도) 문서화되지 않았으므로 구성 문서화되지 않은 파일에서 콘텐츠를 추출하는 Doxygen.

사용 가능한 기능 목록을 찾아 보려면 HTML 출력을 사용할 수 있습니다.

Doxygen 출력을 XML로 구성한 다음 구문 분석기를 작성하여 각 기능에서 찾고있는 통계를 가져 오기 위해 구문 분석기를 작성할 수도 있습니다.

다른 팁

나는 ","의 수를 계산하고 1에서 시작합니다. 이것은 당신에게 인수 수를 함수에 대한 정확한 수를 제공해야합니다. 그런 다음 함수 이름 앞에 "void"가 존재하는지 확인합니다. 그렇지 않으면 반환 값이 있다고 확신 할 수 있습니다.

ifstream infile;
infile.open(...);
int i, ret, args;
String s;

ret = args = 0;
s = infile.getline();
for( i=0; s[i] != '('; i++ ) {
 if( s[i] == 'v' && s[i+1] == 'o' && s[i+2] == 'i' && s[i+3] == 'd' ) {
  ret = 1;
  break;
 }
}

for( i=0; s[i] != '('; i++ ) {}

for( i; s[i] != ')'; i++ ) {
 if( args == 0 && s[i] != ' ' ) {
  args++;
 }
 if( s[i] == ',' ) {
  args++;
 }
}

이 모든 것이 정상 위에 있지만 아마도 이것은 당신의 차 한잔일지도 모릅니다. 엘사 C ++를 구문 분석하고 구문 분석 파일의 추상 구문 트리를 제공 할 수 있습니다. 똑같이 할 수있는 다른 무료 도구가있을 수 있습니다.

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