2011-02-04 2 views
8

변경 사항을 적용하기 전에 코드 커버리지 보고서를 사용하여 자동 또는 수동으로 테스트했는지 확인하고 싶습니다. 자동 테스트가 있으며 변경 사항의 영향을받지 않습니다.코드 커버리지를 버전 컨트롤에 연결

코드 적용 범위 보고서와 함께 버전 관리 도구의 diff를 참조 할 수있는 도구가 있으며 변경된 모든 항목이 실행되었는지 확인하십시오.

나는 코드 커버 리지에서 이것은 보안에 대한 잘못된 인식을 줄 수 있으며, 이와 같은 것으로, 훨씬 더 그렇다고 생각하지만, 시도해 볼만한 가치가 있다고 생각합니다. git과 PHP를 사용합니다 - 저는 XCache의 코드 커버 커버 인터페이스를 사용하여 내가 실행 한 것을 찾아 보았습니다. 유용하지만 git commit이나 push time에서 자동으로 실행될 수 있다면 좋을 것입니다.

+0

프로그래머에게 마이그레이션하는 투표 .stackexchange.com – Mchl

답변

3

git diffs에는 적용 범위를 확인할 수있는 diff-cover이라는 도구가 있습니다. Cobertura XML 커버리지 보고서를 가져와 git diff의 출력과 비교합니다. 그런 다음 diff의 행에 대한 적용 범위 정보를보고합니다. 한,

$ diff-cover coverage.xml 

CI 서버와 통합도 매우 간단하다 : 적절한 범위 XML 파일을 감안할 때

, 당신은 master 분기에 비해 변경의 범위를 확인하려면이 명령을 사용할 수 있습니다 Jenkins에서 $GIT_PREVIOUS_COMMIT과 같이 비교해야하는 커밋을 제공 할 수 있습니다.

+0

PHP 단위 테스트를 실행할 때 Cobertura XML 형식을 얻는 방법은 무엇입니까? 이 도구를'--coverage-clover = coverage.xml'과 함께 사용하면'AttributeError : 'NoneType'객체에 'replace'속성이 없습니다. –

3

continuous integration 빌드 서버를 설정할 수 있습니다 (넉넉한 수는 excellent, free build servers). 빌드 단계 중 하나는 코드 범위를 실행하는 것입니다. 레거시 코드를 무시하고 레거시가 아닌 코드에 대해서만 적용 범위를 계산하도록 설정할 수 있습니다. 그런 다음 적용 범위가 < xx % 인 경우 빌드를 실패하도록 설정합니다. 또는 이전 빌드에서 적용률 %가 감소한 경우에도 실패합니다.

+1

좋은 생각; 매 체크인이나 푸시마다 코드 커버리지와 같은 무거운 작업을 수행하면 버전 관리가 훨씬 어려워 져서 사람들이 그것을 싫어할 것입니다. 대신, 사람들이 메인 라인으로 전혀 밀어 넣지 못하게하십시오. 지속적인 통합 서버 (나는 gitbuilder를 좋아한다)에서 사람들의 브랜치를 테스트 한 다음, 지속적인 통합이 그들을 승인 한 후에 만 ​​브랜치를 메인 라인에 병합한다. – apenwarr

+1

내 질문을 다시 읽으면서, 나는 그것을 틀리게 강조했다. 요점은 커밋 시간에 실행되고 커밋을 방지하지 않습니다. 요점은 내가 커밋하기 전에 내가 변경 한 모든 코드를 실행했는지 확인할 수 있다는 것입니다. 커밋/푸시 시간에 자동 실행될 수 있다는 것은 실제 요구 사항이 아니라 사소한 보너스였습니다. – rjmunro

+0

@rjmunro : 내 대답은 당신이 요구하는 것과 정확히 같지 않지만, 당신이 얻을 수있는만큼 가깝다고 생각합니다. –

관련 문제