gcov로 기능 적용 범위를 측정할 수 있나요?
-
22-08-2019 - |
문제
현재 우리는 Linux C++ 응용 프로그램용 테스트 제품군과 함께 gcov를 사용하고 있으며 라인 범위를 측정하는 데 효과적입니다.
gcov는 라인 적용 범위 외에 함수/메서드 적용 범위 보고서를 생성할 수 있습니까?
gcov가 허용하는 매개변수를 보면 가능하지 않을 것 같지만 뭔가 빠졌을 수도 있습니다.아니면 gcc에서 생성된 통계에서 함수/메소드 적용 범위 보고서를 생성할 수 있는 다른 도구가 있습니까?
업데이트: 함수/메서드 적용 범위란 테스트 중에 실행되는 함수의 비율을 의미합니다.
해결책
당신이 의미하는 것은 -f 옵션으로, 기능별로 처리되는 행의 백분율을 제공합니다.gcov에 관한 흥미로운 기사가 있습니다. 박사.돕스 도움이 될 수도 있습니다."man gcov"가 -f 플래그를 표시하지 않으면 gcc 제품군의 최신 버전이 있는지 확인하십시오.
편집하다: 실행되지 않은 함수의 비율을 얻으려면 함수 적용 범위 출력을 통해 간단히 구문 분석하면 됩니다. 0.00% 적용 범위는 호출되지 않은 것과 거의 동일해야 하기 때문입니다.이 작은 스크립트는 실행되지 않은 함수의 비율을 인쇄합니다.
#!/bin/bash
if test -z "$1"
then
echo "First argument must be function coverage file"
else
notExecuted=`cat $1 | grep "^0.00%" | wc -l`
executed=`cat $1 | grep -v "^0.00%" | wc -l`
percentage=$(echo "scale=2; $notExecuted / ($notExecuted + $executed) * 100" |bc)
echo $percentage
fi
다른 팁
우리는 GCOV를 사용하기 시작했습니다 LCOV 함께. LCOV의 결과에는보고있는 "모듈"에 대해 실행되는 기능의 백분율이 포함됩니다.
편집하다: 그만큼 기준 치수 디렉토리에서 파일로 이동할 수 있습니다.
또한 GNU 컴파일러 도구를 이미 사용하고 있다면 GCOV/LCOV가 실행하기에는 너무 어렵지 않으며 생성 된 결과는 매우 인상적이라고 덧붙입니다.
LCOV 유틸리티는 훌륭하고 우리는 그것을 사용합니다. 그러나 당신이 원하는 것에 필요한 것이 필요한지 확실하지 않습니다.
우리
CTAGS 사용 (위키 백과; Sourceforge) 관련 헤더 파일에서 선언 된 모든 기능을 찾기 위해.
바이너리의 모든 기능에 대한 라인 커버리지를 얻으려면 GCOV를 실행하십시오.
1 & 2의 함수 목록을 비교하여 " /"기능을 사용하는 "기능"을 생성하십시오.
우리는 그것을 공개 API 헤더에만 적용하기 때문에 "API 적용 범위"라고 부릅니다. 그러나 선택한 모든 헤더 또는 하위 집합에서만 수행 할 수 있습니다. 우리가 이런 식으로 생산하는 비율은 당신이 찾고있는 비율이라고 생각합니다.