2012-02-27 6 views
3

Я изо всех сил пытаюсь настроить покрытие кода. Что мне делать, как мне настроить это, чтобы я мог получить карту покрытия/отчет, пожалуйста?Как настроить Jenkins для отчета о покрытии php?

У меня есть единичный тест, который работает. Какие флажки я должен проверить: Действия после сборки? Должен ли я установить плагин? Тест блок в PHP 5.3.2 и я бегу Symfony 1.4.5

в cibuild сценарий я бегу:

php "test/unit/RbcTest.php" 

и здесь фактический тестовый код:

<?php 
    require_once dirname(__FILE__).'/../bootstrap/unit.php'; 
    require_once 'PHP/CodeCoverage/Autoload.php'; 
    set_include_path ('phoenix/lib/'); 
    $coverage = new PHP_CodeCoverage; 
    $coverage->start('strtolowerTest.php'); 
    $coverage->stop(); 
    $writer = new PHP_CodeCoverage_Report_Clover; 
    $writer->process($coverage, 'phoenix/test/clover.xml'); 
    $writer = new PHP_CodeCoverage_Report_HTML; 
    $writer->process($coverage, 'phoenix/test/code-coverage-report'); 
?> 

<?php //strtolowerTest.php 
echo "1. for strlower"; 
require_once 'phoenix/lib/vendor/symfony/lib/vendor/lime/lime.php'; 
echo "2. for strlower"; 
require_once 'phoenix/lib/validator/myValidatorString.class.php'; 
echo "3. for strlower"; 
require_once 'phoenix/lib/vendor/symfony/lib/validator/sfValidatorString.class.php'; 
$t = new lime_test(2, new lime_output_color()); 
$t->is(myValidatorString::doCleanEmail('blabla-32.mtmail..com'), '[email protected]'); 
$t->is(myValidatorString::doClean('@#*+??%^!~blabla-===32.mtmail..com'), '[email protected]'); 
$t->is(myValidatorString::slugify('sensio labs'), 'sensio-labs'); 
$t->is(myValidatorString::slugify('paris,france'), 'paris-france'); 
$t->is(myValidatorString::slugify(' sensio'), 'sensio'); 
$t->is(myValidatorString::slugify('sensio '), 'sensio'); 
$t->is(myValidatorString::slugify(''), 'n-a', '::slugify() converts the empty string to n-a'); 
$t->is(myValidatorString::slugify(' - '), 'n-a', '::slugify() converts a string that only contains non-ASCII characters to n-a'); 

$t->diag('hello world'); 
$t->ok(true, 'test something'); 
?> 

пожалуйста, помогите спасибо

Вот вывод, когда я смотрю консольную сборку в дженкинсе:

PHPUnit 3.6.10 by Sebastian Bergmann. 

Class test/phpunit/unit/RbcTest could not be found in /var/lib/jenkins/workspace/b32b733b59ba6be9884da7427bee5c95/phoenix/test/phpunit/unit/RbcTest.php.Publishing Clover coverage report... 
Publishing Clover HTML report... 
Publishing Clover XML report... 
Publishing Clover coverage results... 
Code coverage enforcement failed for the following metrics: 
    Methods 
    Conditionals 
Setting Build to unstable. 
Build step 'Publish Clover Coverage Report' changed build result to UNSTABLE 
Publishing Clover coverage report... 
Publishing Clover XML report... 
Publishing Clover coverage results... 
Code coverage enforcement failed for the following metrics: 
    Methods 
Setting Build to unstable. 
[ci-game] evaluating rule: Build result 
[ci-game] evaluating rule: Increased number of failed tests 
[ci-game] evaluating rule: Increased number of passed tests 
[ci-game] evaluating rule: Decreased number of failed tests 
[ci-game] evaluating rule: Decreased number of passed tests 
[ci-game] evaluating rule: PMD violation 
[ci-game] evaluating rule: pylint violation 
[ci-game] evaluating rule: CPD violation 
[ci-game] evaluating rule: Checkstyle violation 
[ci-game] evaluating rule: FindBugs violation 
[ci-game] evaluating rule: FXCop violation 
[ci-game] evaluating rule: Simian violation 
[ci-game] evaluating rule: StyleCop violation 
[ci-game] evaluating rule: HIGH priority PMD warnings 
[ci-game] evaluating rule: NORMAL priority PMD warnings 
[ci-game] evaluating rule: LOW priority PMD warnings 
[ci-game] evaluating rule: Changed number of compiler warnings 
[ci-game] evaluating rule: Changed number of checkstyle warnings 
Finished: UNSTABLE 



<?php 
class myValidatorString extends sfValidatorString 
{ 
    static public function slugify($text) 
    { 
     echo "in myvalidatorstring for class sfValidatorString.class.php"; 
     // replace all non letters or digits by - 
     $text = preg_replace('/\W+/', '-', $text); 

     // trim and lowercase 
     $text = strtolower(trim($text, '-')); 

     if (empty($text)) 
     { 
     return 'n-a'; 
     } 
     return $text; 
    } 
} 

благодаря

ответ

5

PHP сам по себе не генерирует информацию о покрытии кода. Расширение Xdebug будет собирать строки, которые выполняются во время запуска скрипта, но он не будет создавать отчеты. Вы должны использовать PHPUnit с PHP_CodeCoverage для запуска тестов и вывода отчета, который может предоставить Jenkins.

Используйте pecl для установки Xdebug и pear для двух других. Вы также должны посмотреть на Template for Jenkins Jobs for PHP Projects.

+0

благодарит вас, установлен PHP_CodeCoverage. куда я иду отсюда, пожалуйста? каков следующий шаг, чтобы заставить моих дженкинсов подготовить отчет о покрытии кода? спасибо –

+0

Установите PHPUnit и следуйте за [docs] (www.phpunit.de) для настройки CC. Вам нужно будет написать для него свои модульные тесты, или вы можете попытаться использовать CC без него. Однако я этого не сделал. –

+0

спасибо, что у меня есть модульные тесты и у вас установлен PHPUnit. Я настроил jenkins для генерации clover.xml, но независимо от того, как я определяю путь, он дает ошибки! Пожалуйста, см. Основной пост для сообщений об ошибках –

0

Для PHP, вы можете использовать Clover PHP plugin. После установки этого плагина у вас будут дополнительные параметры настройки задания, чтобы настроить все (см. Описание плагина).

+0

Я побежал wget http://myhost.net:12343/jnlpJars/jenkins-cli.jar и сохранил файл. next i do: java -jar jenkins-cli.jar -s http://myhost.net:1234 install-plugin cloverphp и получить: Неверный или поврежденный jarfile jenkins-cli.jar ??? мольбы помочь? Спасибо! –

+1

Вы можете установить плагины через веб-интерфейс. Просто зайдите в Управление Jenkins -> Управление плагинами. –

Смежные вопросы