2012-02-21 6 views
3

나는 모든 머리말 파일을 바꾸고 휴식하는 C++ 파일이있다 변하지 않게 남아있다. 그러나 번역 단위를 다시 파싱 할 때마다 libclang은 많은 CPU와 램을 소비하게됩니다. 그것은 미리 컴파일 된 헤더 및 모든 (나는 프리앰블 파일이 생성 된 볼 수 있지만) 여전히 꽤 많은 리소스뿐만 아니라 시간이 걸립니다.번역 단위의 libclang 느린 reparsing

다음은 내 코드 스 니펫입니다.

translation_unit_ = clang_parseTranslationUnit(index_, 0, clang_argv[0], 
    clang_argv.size() - 1, 0, 0, 
    clang_defaultEditingTranslationUnitOptions()); 
// File name is in the arguments. 


// Here I reparse again every time file changes. 
clang_reparseTranslationUnit(translation_unit_, 0, 0, 
    clang_defaultReparseOptions(translation_unit_)); 

// This is how I get diagnositics 
CXDiagnostic diag = clang_getDiagnostic(translation_unit_, i); 

누구나 내가 한 번의 변경 소스 파일에서 컴파일 오류를 찾기 위해 올바른 설정을 제안 할 수 있습니까?

+0

간단히 컴파일 오류를 찾는 것이 목표입니까? 아니면 고품질의 최적화되고 최소화 된 코드 출력을 원하십니까? – sarnold

+0

컴파일 오류 및 코드 완성을 찾으십시오! – abhanshu

답변

1

초기 색인 생성에서 clang_defaultEditingTranslationUnitOptions()을 사용하고 나중에 clang_defaultReparseOptions()을 사용하고 있습니다. 두 곳에서 clang_defaultEditingTranslationUnitOptions()을 사용해보세요.

또한 소스를 매우 빠르게 재분석 할 것을 기대하지 마십시오. 모든 변경 사항을 으로 변경하면 모든 간단한 변경 사항을 확인할 수 있습니다. 마지막 변경 후 수 밀리 초 동안 기다려서 여러 변경 사항을 단일 재분석으로 축적 할 수 있는지 확인할 수 있습니까?