Как украсить вывод финга?

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 

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

Я бы хотел, чтобы phing log выглядел так:

  ✔ 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 

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

То, что вы могли бы попробовать, это использовать phing.listener.XmlLogger и phing.listener.XmlLogger его через xsltproc со своей собственной 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> в <?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> в <?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> в <?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 - 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 

u имеет ошибку sytax в строке 2 mytest

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

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