해킹 언어 용 코드 적용 도구 (hhvm)가 있습니까?해킹 언어 용 코드 커버리지 도구
이 질문은 hhvm (예 : PHPUnit을 사용하여 가능)에서 실행되는 PHP 소스 코드의 코드 범위가 아니라 해킹 언어로 작성된 소스 코드의 코드 적용 범위를 생성하는 것과 관련이 있습니다.
해킹 언어 용 코드 적용 도구 (hhvm)가 있습니까?해킹 언어 용 코드 커버리지 도구
이 질문은 hhvm (예 : PHPUnit을 사용하여 가능)에서 실행되는 PHP 소스 코드의 코드 범위가 아니라 해킹 언어로 작성된 소스 코드의 코드 적용 범위를 생성하는 것과 관련이 있습니다.
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
해킹 코드의 내부 표현은 PHP와 비슷한 매우입니다. 기존의 코드 커버리지 라이브러리가 정확히 어떻게 확인되는지에 따라, 그들은 단지 작동 할 가능성이 있습니다. 해킹 코드를 통해 PHPUnit을 사용하여 테스트 케이스를 작성해 보았습니까? 예를 들어, 그들의 범위는 효과가있을 수 있습니다!
OPUPHPUnit의 테스트 코드를으로 작성하는 데 유용 할 수 있지만 PHP 테스트 커버리지 도구 (PHPUnit은 이해할 수 있음)의 대부분은 XDEBUG를 사용하여 테스트 커버리지 데이터를 수집합니다. 해킹 구현에 익숙하지는 않지만 젠드와 아무 관련이 없다는 것을 알고 있습니다 ... 그래서 XDEBUG가 포함되어있는 가능성이 희박합니다. XDEBUG를 Hack에서 사용할 수 없다면 XDEBUG 기반 서비스 제공 도구는 문자 그대로 필요한 데이터를 수집 할 수 없습니다.
해킹이 PHP와 동일한 경우 당사의 PHP Test Coverage Tool은 아마 직접 작동 할 것입니다. 그것은 소스 코드을 계측하므로 어떤 식 으로든 XDEBUG의 존재에 의존하지 않습니다. 필자는 PHPUnit을 쉽게 적용 할 수 있다고 생각합니다.
(해킹이 완전히 동일하지 않은 경우 테스트 적용 범위 도구는 일반적인 용도의 프로그램 변환 시스템을 기반으로하므로 변경된 구문을 매우 쉽게 처리하도록 수정 될 수 있습니다.
HHVM은 상당히 최근에 버전 3.4에서 xdebug의 상당 부분을 지원합니다. PHP와 마찬가지로 해킹 코드에서도 작동해야하지만 HHVM은 IDE 디버거에 사용되는 xdebug의 일반적인 비트 만 지원하므로 PHPUnit에서 커버리지 데이터에 필요한 비트를 지원할 수도 있고 지원하지 않을 수도 있습니다. –
을 사용하고 CodeCoverage을 사용하고 있습니다 네, PHPUnit을 사용해 보았습니다. 그것은 실행 테스트 (hhvm은 PHP와 다른 Hack을 실행합니다)에 잘 작동합니다. 그러나 Hack 소스 파일을 구문 분석하는 동안 오류로 인해 Coverage가 실패했습니다. – farzad