문제

CppUnit을 사용하여 광범위한 단위 테스트를 포함하는 매우 큰 코드 기반이 있습니다.이 테스트에 의해 실행되는 코드의 비율을 파악해야합니다 그리고 (이상적으로) 라이브러리 별 또는 파일별로 나에게 알려주는 일종의 보고서를 생성해야합니다.코드가 실행되었습니다.

키커가 있습니다. 이것은 완전히 자동으로 실행되어야하며 (결국 지속적인 통합 빌드 내에서) 크로스 플랫폼이어야합니다 (적어도 WIN32 및 * nix).

누군가이 작업을 수행하는 데 도움이되는 도구 또는 도구 모음을 제안 할 수 있습니까?CppUnit에서 멀어 질 수는 없지만 (나도하고 싶지도 않습니다. 당황 스러울 수도 있습니다), 그렇지 않으면 여러분이 제안 할 수있는 모든 권장 사항을 듣고 싶습니다.

건배

도움이 되었습니까?

해결책

어떤 도구를 사용해야합니까?

도움말 다른 개발자는 C ++ 코드 커버리지 도구를 검색하는 데 좌절감을 느낍니다. 작성자의 최종 솔루션은 Bullseye Coverage 였습니다.

Bullseye 적용 범위 기능 :

  • 크로스 플랫폼 지원 (win32, unix 및 임베디드), (linux gcc 컴파일러 및 MSVC6)
  • 사용하기 쉬움 (몇 시간 내에 실행)
  • "최상의"측정 항목 제공 : 기능 범위 및 조건 / 결정 범위
  • 소스 코드 도구를 사용합니다.

    지속적 통합에 연결하는 경우 사용하는 CI 솔루션에 따라 다르지만 자동화 테스트에 사용하는 make 파일에 계측 / 범위 측정 단계를 연결할 수 있습니다. <시간>

    Linux와 Windows를 비교하고 있습니까?

    모든 테스트가 두 환경 모두에서 올바르게 실행되는 한, 둘 중 하나에 대한 범위를 정밀하게 측정해야합니다. (Bullseye는 두 플랫폼을 모두 지원 하는 것으로 나타납니다). 하지만 두 환경 모두에서 지속적 통합 빌드를 수행하지 않는 이유는 무엇입니까? 두 환경 모두에서 클라이언트에게 제공하는 경우 두 환경 모두에서 테스트해야 필요 합니다.

    그러므로 두 개의 연속 빌드 서버를 설정해야 할 것 같습니다. 하나는 Linux 빌드 용이고 다른 하나는 Windows 빌드 용입니다. vmware 또는 virtualbox . 두 OS 모두에서 코드 커버리지 측정 항목을 실행할 필요는 없지만 두 OS 모두에서 단위 테스트를 실행해야합니다.

다른 팁

GNU GCC 를 컴파일러로 사용할 수있는 경우 gcov 도구가 잘 작동합니다.전체 프로세스를 완전히 자동화하는 것은 매우 쉽습니다.

GCC 도구 모음을 사용하는 경우 gcov는 소스, 기능 및 분기 범위 통계를 제공합니다. gcov는 MinGW 및 Cygwin에서 잘 작동합니다. 이를 통해 커버리지 통계를 얻을 수있을뿐만 아니라 실행되지 않은 코드를 시각화 할 수있는 계측 된 소스 코드를 내보낼 수 있습니다.

하지만 정말 멋진 보고서로 공원 밖으로 나가고 싶다면 lcov 를 이용하세요. lcov는 범위를 파일 및 디렉토리, 기능적 범위 통계, 색상 코드화 된 소스 파일 브라우징으로 표시하여 범위를 표시하는 막대 보고서를 제공합니다 (녹색은 실행됨을 의미하고 빨간색은 그렇지 않음을 의미합니다 ...).

lcov는 Linux에서는 쉽지만 Cygwin에서는 약간의 펄 해킹이 필요할 수 있습니다. 개인적으로 Windows에서 스크립트 (lcov는 perl로 구현 됨)를 실행하는 데 문제가있었습니다. 작동 할 해킹 된 버전이 있지만 미리 알려드립니다.

또 다른 접근 방식은 Windows에서 gcov 방출을 수행하고 Linux에서 lcov 사후 처리를 수행하는 것입니다. 여기서는 즉시 작동합니다.

SD C ++ 테스트 범위 도구를 확인하세요.GCC 및 MSVC6 용으로 얻을 수 있습니다.

낮은 오버 헤드 프로브 데이터 수집, 코드에 오버레이 된 커버리지 데이터의 멋진 디스플레이, 메서드 / 클래스 / 파일 / 디렉토리 레벨 전체에 걸친 커버리지 롤업을 통한 완전한 보고서 생성 기능이 있습니다.

편집 : 2015 년 8 월 : 이제 Visual Studio 2015를 통해 GCC5 및 다양한 MS 방언을 지원합니다. Linux에서 이러한 도구를 사용하려면 Wine이 필요하지만 Linux 네이티브 sh 스크립팅 및 Linux / Java 기반 UI를 제공하는 도구가 있습니다.이 도구는 원래 Linux 도구처럼 느껴집니다.

컴파일러를 지정해야한다고 생각합니다. Linux에는 gcc를, WIn32에는 MSVC 6 (예, 오래되었지만 (대부분) 작동합니다)을 사용하고 있습니다.

그러한 이유로 gcov는 Win32 빌드에서는 작동하지 않으며 Bullseye는 Linux 빌드에서는 작동하지 않습니다.

그런 다음에도 하나의 OS에서만 커버리지가 필요할 수도 있습니다 ...

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