Как украсить вывод phing?

Phing, по умолчанию или даже с помощью любого из встроенных регистраторов (phing.listener.NoBannerLogger, phing .listener.AnsiColorLogger, phing.listener.XmlLogger и phing.listener.HtmlColorLogger) имеют довольно подробный вывод.

Мой вариант использования — использовать Phing для запуска тестов в качестве хука перед фиксацией. Поэтому я не забочусь обо всей той информации, которую мне может предоставить журнал phing. Я просто использую его как мультиплатформенный инструмент для запуска тестов.

Пример:

Buildfile: /private/var/workspace/www/me_com/build.xml

SBKSWWW > main:

   [delete] Deleting /private/var/workspace/www/me_com/temp/pre-commit-hook/changed_files
   [delete] Deleting directory /private/var/workspace/www/me_com/temp/pre-commit-hook
    [mkdir] Created dir: /private/var/workspace/www/me_com/temp/pre-commit-hook
  [phplint] Parse error: parse error in ./www/MyTest.php on line 2
[phpcodesniffer] 2 files where checked
[phpcodesniffer] No syntax errors detected

BUILD FINISHED

Total time: 0.3430 seconds

Многие из этих строк действительно избыточны и бесполезны для моего варианта использования. На самом деле я даже не запускаю «сборку» в первоначальном значении.

Я бы хотел, чтобы журнал phing выглядел примерно так:

 ✔ Commited code matches coding standards
 ✘ Commited code has syntax errors!
   Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE in MyTest.php on line 2

Если вы считаете, что я использую плохой инструмент для своих целей, скажите мне и об этом, я был бы рад узнать, что есть что-то еще.


person Radek Simko    schedule 29.07.2012    source источник


Ответы (3)


Что вы можете попробовать, так это использовать phing.listener.XmlLogger и передать его через xsltproc со своей собственной таблицей стилей.

Учитывая базовый файл build.xml, который просто анализирует ваш PHP:

<?xml version="1.0" ?>
<project name="Example" basedir=".">

    <target name="lint" description="PHP syntax check">
        <phplint>
            <fileset dir="src">
                <include name="**/*.php"/>
            </fileset>
        </phplint>
    </target>

</project>

В сочетании с parse.xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="text"
        omit-xml-declaration="yes"/>

    <xsl:template match="/build">
        <xsl:variable name="newline"><xsl:text>
</xsl:text></xsl:variable>

        <xsl:for-each select="target">
            <xsl:text>Task: </xsl:text>
            <xsl:value-of select="concat(@name, $newline)" />

            <xsl:choose>
                <xsl:when test="task/message[@priority = 'error']">
                    <xsl:value-of select="concat(task/message[@priority = 'error'], $newline)"/>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:text>No errors</xsl:text>
                    <xsl:value-of select="$newline" />
                </xsl:otherwise>
            </xsl:choose>
        </xsl:for-each>
    </xsl:template>

</xsl:stylesheet>

Вызов с phing -logger phing.listener.XmlLogger lint | xsltproc parse.xsl - даст вам что-то чистое, например:

Task: lint
Fatal error: Only variables can be passed by reference in Request.class.php on line 128
person Nev Stokes    schedule 18.10.2012

Начиная с Phing 2.11.0, вы должны использовать phing.listener.SilentLogger

person Siad Ardroumli    schedule 03.05.2020

у вас синтаксическая ошибка в строке 2 mytest

в основном это происходит, когда передается неуместный код или он не закрывается должным образом, например {}

Вы можете опубликовать строку 2 mytest

person kaushik000    schedule 29.07.2012
comment
Вы прочитали весь вопрос? Я не спрашиваю об ошибке, я спрашиваю об инструменте. Ошибка там намеренно. - person Radek Simko; 29.07.2012