Как настроить Jenkins для отчета о покрытии php? - PullRequest
3 голосов
/ 27 февраля 2012

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

У меня есть модульный тест, который запускается.Какие флажки я должен установить в разделе: Действия после сборки?Должен ли я установить плагин?Модульный тест приведен в 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'), 'blabla@mtmail.com');
$t->is(myValidatorString::doClean('@#*+??%^!~blabla-===32.mtmail..com'), 'blabla@mtmail.com');
$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');
?> 

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

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

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;
   }
 }

спасибо

Ответы [ 2 ]

5 голосов
/ 27 февраля 2012

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

Используйте pecl для установки Xdebug и pear для двух других. Вы также должны взглянуть на Шаблон для Дженкинса Джобса для проектов PHP .

0 голосов
/ 27 февраля 2012

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

...