2014-02-13 43 views
0

我phpcodesniffer報告是生產線,如下面的例子:我想phpcodesniffer防止重複錯誤報告

146 | ERROR | Variable "tw_text" is not in valid camel caps format (Zend.NamingConventions.ValidVariableName.NotCamelCaps) 
148 | ERROR | Variable "tw_text" is not in valid camel caps format (Zend.NamingConventions.ValidVariableName.NotCamelCaps) 
154 | ERROR | Variable "tw_text" is not in valid camel caps format (Zend.NamingConventions.ValidVariableName.NotCamelCaps) 

該報告相同的變量的持續使用的,例如:

$tw_text = ''; 
    : 
$tw_text = $_POST['text']; 
    : 
$tw_text = ''; 

我需要只是第一個報告,因爲第二個和第三個真的是依賴於第一個。

有什麼辦法可以達到這個目的嗎?

+0

在這個例子中,每一行都沒有通過編碼測試,這就是您看到報告的原因。我不確定刪除這些內容的方法,或者如果您想要,因爲它們都基於您的嗅探是有效的。 2.0版本假設允許在準備好時修復這種類型的錯誤,但我不確定是否要在輸出中隱藏某些行,以防重新分解並錯過某些事件。 –

+0

PHPCS沒有任何內容可以做到這一點,因爲它將每個變量視爲一個單獨的事件。 2.0版本(現在是alpha 1)不會修復這個特定的錯誤,因爲在沒有開發人員干預的情況下更改變量名稱的風險非常高,所以您需要自行管理這些錯誤。 –

+0

謝謝@Steven Scott和Greg Sherwood。我將看看2.0分支。我完全瞭解您爲了QA的目的而保留錯誤的意見,但在這種情況下,我的使用案例是對代碼進行後期審覈。改變輸出可能更有意義,然後在PHPCS本身中進行更改。 – crafter

回答

0

您可以使用簡單的腳本來過濾錯誤。

#!/usr/bin/env php 
<?php 

$seen = []; 
while ($line = fgets(STDIN)) { 
     $err = explode('|', $line)[2]; 

     if (in_array($err, $seen)) 
       continue; 

     $seen[] = $err; 

     print($line); 
} 
+0

不錯,還有我最喜歡的'編程語言'。文件中的錯誤不一定是順序的。我會玩這個,看看我能得到多遠。也許是救援的切入和獨特結合? – crafter

+0

@crafter對;我已經更新了我的答案,我將它作爲一個PHP腳本,當然可以用shell腳本來做到這一點,但這確實是shell腳本變得毛茸茸的點。 – Carpetsmoker