2015-01-09 5 views
3

해킹 언어 용 코드 적용 도구 (hhvm)가 있습니까?해킹 언어 용 코드 커버리지 도구

이 질문은 hhvm (예 : PHPUnit을 사용하여 가능)에서 실행되는 PHP 소스 코드의 코드 범위가 아니라 해킹 언어로 작성된 소스 코드의 코드 적용 범위를 생성하는 것과 관련이 있습니다.

답변

4

PHPUnit (4.4,4.5,4.6)의 현재 버전은 적용 범위를 생성하지 않으며이 오류로 인해 실패합니다.

$php phpunit-alpha.phar -coverage-html=cover t/ 
PHPUnit alpha-2015-01-09 by Sebastian Bergmann and contributors. 

PHPUnit alpha-2015-01-09 by Sebastian Bergmann and contributors. 
Fatal error: Class undefined: PHP_Token_TYPELIST_LT in phar://phpunit-alpha-2015-01-09.phar/php-token-stream/Token/Stream.php on line 185 

나는 코드 커버리지가 XDEBUG를 사용하고 있다는 것에 동의한다. 그러나 어떤 이유로 PHPUnit은 HackLang 코드 커버리지를 결정하지 않았습니다.

먼저 업데이트 : Hacklang는 PHP 토큰 스트림이 인식 할 수없는 더 많은 구조 (람다), (모양, 종류 등) 더 등록 명령을 가지고 있기 때문에

때문이다.

수정 사항은 매우 간단합니다. 정의되지 않은 클래스를 만들고 PHP_Token에서 확장 할 수 있습니다. 내 프로젝트에 대한 예를 들어 나는이 클래스를 생성했다 :

class PHP_Token_TYPELIST_LT extends PHP_Token {} 
class PHP_Token_TYPELIST_GT extends PHP_Token {} 
class PHP_Token_TYPE extends PHP_Token {} 
class PHP_Token_SHAPE extends PHP_Token {} 
class PHP_Token_LAMBDA_OP extends PHP_Token {} 
class PHP_Token_LAMBDA_CP extends PHP_Token {} 
class PHP_Token_LAMBDA_ARROW extends PHP_Token {} 

두 번째 업데이트 :

phpunit을이 실행 된 라인을 감지하고 해당 프로젝트에, HHVM에이 fb_get_code_coverage

1

해킹 코드의 내부 표현은 PHP와 비슷한 매우입니다. 기존의 코드 커버리지 라이브러리가 정확히 어떻게 확인되는지에 따라, 그들은 단지 작동 할 가능성이 있습니다. 해킹 코드를 통해 PHPUnit을 사용하여 테스트 케이스를 작성해 보았습니까? 예를 들어, 그들의 범위는 효과가있을 수 있습니다!

+0

을 사용하고 CodeCoverage을 사용하고 있습니다 네, PHPUnit을 사용해 보았습니다. 그것은 실행 테스트 (hhvm은 PHP와 다른 Hack을 실행합니다)에 잘 작동합니다. 그러나 Hack 소스 파일을 구문 분석하는 동안 오류로 인해 Coverage가 실패했습니다. – farzad

1

OPUPHPUnit의 테스트 코드를으로 작성하는 데 유용 할 수 있지만 PHP 테스트 커버리지 도구 (PHPUnit은 이해할 수 있음)의 대부분은 XDEBUG를 사용하여 테스트 커버리지 데이터를 수집합니다. 해킹 구현에 익숙하지는 않지만 젠드와 아무 관련이 없다는 것을 알고 있습니다 ... 그래서 XDEBUG가 포함되어있는 가능성이 희박합니다. XDEBUG를 Hack에서 사용할 수 없다면 XDEBUG 기반 서비스 제공 도구는 문자 그대로 필요한 데이터를 수집 할 수 없습니다.

해킹이 PHP와 동일한 경우 당사의 PHP Test Coverage Tool은 아마 직접 작동 할 것입니다. 그것은 소스 코드을 계측하므로 어떤 식 으로든 XDEBUG의 존재에 의존하지 않습니다. 필자는 PHPUnit을 쉽게 적용 할 수 있다고 생각합니다.

(해킹이 완전히 동일하지 않은 경우 테스트 적용 범위 도구는 일반적인 용도의 프로그램 변환 시스템을 기반으로하므로 변경된 구문을 매우 쉽게 처리하도록 수정 될 수 있습니다.

+0

HHVM은 상당히 최근에 버전 3.4에서 xdebug의 상당 부분을 지원합니다. PHP와 마찬가지로 해킹 코드에서도 작동해야하지만 HHVM은 IDE 디버거에 사용되는 xdebug의 일반적인 비트 만 지원하므로 PHPUnit에서 커버리지 데이터에 필요한 비트를 지원할 수도 있고 지원하지 않을 수도 있습니다. –