2012-07-29 45 views
1

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 

如果你認爲我現在用的是不好的工具,我的目的,告訴過我這些,我會很高興知道還有別的東西。

回答

-2

u有上線的語法時才錯誤2 mytest的

時inapropriate代碼傳遞或無法正常關閉,如{}

你可以張貼線2的mytest的

+0

難道你讀完整個問題?我不是在問這個錯誤,我是在問這個工具。錯誤是有意的。 – 2012-07-29 12:18:14

0

談到基本你可以嘗試使用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