2016-09-07 8 views
0

C++에서 테스트를 작성하고 있으며 gcov (실제로 lcov이지만 포인트 옆에 있다고 생각합니다)를 사용하여 적용 범위에 대한 정보를 얻습니다.실행시 gcov 적용을 비활성화합니다.

런타임에 정보 레코드를 비활성화하는 방법이 있습니까? E.G. : 나는대로 표시 gcov를하고 싶은이 경우

bool myTest() { 
    ObjectToTest obj; 

    /* Enable gcov... */ 

    obj.FunctionToTest(); 

    /* ...Disable gcov */ 

    if(obj.GetStatus() != WHATEVER) 
     return false; 
    else 
     return true; 
} 

는 "발견"단지 FunctionToTest 만 남겨 ObjectToTest 생성자와의 getStatus을 "적용".

미리 감사드립니다.

+0

아니,이 정말 수 없습니다. 계측 코드가 있으면 비활성화 할 수 없습니다. –

답변

0

아니요, gcov의 경우 해당 옵션이 없습니다.

나는 소스 코드를 직접 조작하여 작동하는 클로버와 같은 일부 적용 도구에서 이러한 옵션을 보았습니다.

문제의 해결책 옆에 다른 소스 파일에 코드의 일부를 작성하고 원하는 소스 파일에 코드를 포함시켜 호출하십시오.
LCOV 또는 GCOVR을 사용하여 나중에 범위 보고서를 생성 할 때 둘 다 특정 플래그를 특정 플래그로 전달하여 특정 파일을 제외 보고서에서 제외시키는 옵션을 제공하기 때문에 제안 할 것입니다.

LCOV :

-r tracefile pattern 
    --remove tracefile pattern 
      Remove data from tracefile. 

GCOVR : 그것은 컴파일하는 동안 코드를 생성 할 때 데이터를 생성하는 지침을 삽입 컴파일러 때문에

-e EXCLUDE, --exclude=EXCLUDE 
        Exclude data files that match this regular expression