분기 커버리지 마커(네모박스)가 겹쳐져 있습니다.

수정일 수, 30 4월 시간: 8:12 AM

설명 :
"커버된 영역 표시하기" 기능으로 해당 코드 라인 왼쪽의 마커(네모박스)로 분기커버리지가 만족된 케이스를 확인할 수 있습니다.


간혹 한줄의 코드에 두개 이상의 분기가 포함된 경우가 있는데, 해당 라인에서 매크로 함수가 사용된 경우가 대표적이며 이런 경우, 아래와 같이 마커가 두개 겹쳐있는 모양으로 표시됩니다.(한줄에 분기가 2개던 3개던, 모두 마커가 두개가 겹칩니다.) 

위와 같이 표시되면, 마커의 정보 만으로는 여러 분기중에 어떤 케이스를 만족했는지 식별하기 어렵습니다. 이때 아래와 같은 방법들로 추적해볼 수 있습니다. 


방법 1 : 전처리 코드 확인 

일반적인 코딩 스타일에서는, 위와 같이 한줄에 여러 분기를 작성하지 않는게 보통입니다.


대부분 해당 라인에 매크로 함수가 사용되면서 생긴 문제이기 때문에

해당 라인의 매크로함수가 어떻게 전처리가 풀려있는지 전처리 코드를 확인하는게 좋습니다.


아래 경로에 대상 프로젝트의 도구 전처리파일들이 모여있습니다.

아래에서 원하는 소스파일의 이름과 매칭되는 전치리파일을 열어서, 전처리코드를 확인할 수 있습니다.

+ 전처리파일

"CT워크스페이스"\"CT프로젝트명"\.csdata\src\preprosessed\"소스파일명_숫자".i.c 파일


전처리파일을 통해 소스코드의 전처리가 풀린 결과를 확인할 수 있고

특정 라인에 어떤 분기들이 포함되어 있는지도 확인할 수 있습니다.


방법 2 : 제어 흐름 그래프 확인 

제어 흐름 그래프를 확인하면, 해당 함수에 어떤 분기들이 있고, 어느 부분의 커버리지를 만족하지 못했는지(빨간색) 식별할 수 있습니다. 


제어 흐름 그래프에서 커버되지 못한 Condition 혹은 Statement 를 더블클릭하면, 소스코드 에디터에서 해당 위치의 코드 라인을 가리켜 줍니다.


하지만 이 기능은 소스코드의 라인 단위로만 표시되기 때문에, 여러 문장이 한줄의 소스코드에 합쳐져 있다면, 모두 똑같은 라인을 가리킬 뿐입니다.

이 기능을 의미있게 사용하려면, 소스코드 한줄에 하나의 문장만 존재하도록 소스코드를 정리해야 합니다.


방법 3 : beautifier 로 전처리 코드 정리 

전처리파일에서 확인된 소스코드 라인의 중간중간에 줄바꿈문자를 작접 추가하여 정리할수도 있습니다.

만약 한줄의 코드에 너무 많은 분기문이 포함되거나 코드가 복잡해서 직접 정리하는게 어렵다면, beautifier 의 도움을 받을 수 있습니다.


beautifier 를 이용하면 소스코드 한줄에 하나의 문장만 존재하도록 코딩 스타일을 자동으로 정리해줍니다.

사용할 수 있는 beautifier 도구의 예시는 아래와 같으며, 인터넷 검색을 통해 무료로 사용 가능한 beautifier 도구를 더 많이 찾을 수 있습니다.

https://codebeautify.org/cpp-formatter-beautifier


위 방법으로 전처리파일에서 확인할 소스코드를 정리하면, 아래와 같이 쉽게 식별할 수 형태가 됩니다.


방법 4 : 파악해야 할 라인의 소스 코드를 정리된 전처리 코드로 변경하고 테스트 재실행 

파악하기 어려운 소스코드를 주석처리하고, 파악하기 쉽도록 정리된 전처리코드를 붙여넣기 후, 테스트를 재실행하여 결과를 확인합니다.

** 위 방법은 편하게 파악하기 위한 임시조치이므로, 파악이 완료된 이후에 반드시 기존 소스코드 형태로 되돌려야 합니다.


위와 같은 상태로 정리되면, 어떤 분기의 커버리지가 만족되지 않았는지도 쉽게 파악할 수 있고 제어 흐름 그래프에서 커버되지 못한 Condition 혹은 Statement 를 더블클릭해서 소스코드 에디터에서 해당 위치의 코드 라인을 가리켜 주는 기능도 편하게 사용할 수 있습니다. 

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.