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