Visual C++ 로 Code coverage 계산할때 링커옵션 설정
Friday, April 2nd, 2010예전 포스트에 올린 자료에서 /Profile 옵션을 켜야 VC++의 coverage 분석을 할 수 있다고 하였다. 이 옵션은 Coverage 분석을 위한 필수 옵션이다.
고려할 옵션이 하나 더 있다. /OPT:NOREF 라는 최적화 옵션이다.
링커의 기본 최적화 설정은 따라 참조되지 않는 데이터를 링크할 때 삭제해 버린다. 이렇게되면 Coverage 분석할 때 모두 몇 라인 중에서 몇 라인이 커버되었다라는 분석데이터가 정확하지 않게 된다. 함수 foo() 가 테스트 코드에서 호출되지 않아서 실행파일에 포함되지 않기 때문이다.
/OPT:NOREF 옵션은 참조되지 않는 데이터도 유지하겠다는 옵션이다.
이 옵션을 찾게 된 이유는 새로 테스트를 추가했는데 오히려 Coverage가 낮아진 경우가 있어서였다. Test가 추가되었는데 Coverage가 낮아지다니!.. 하지만 TDD로 개발한 것이 아니다보니 어쩔 수 없는일… 우선은 TAD(Test after development)라도 열심히하고, 다음부턴 TDD 열심히 해야지.
