2012-07-31 27 views
1

Codeniffer的標準是否會在下面的代碼中運行時沒有錯誤或警告? 如果沒有有創建代碼標準的教程,那也解釋了已經實現的標準的不同嗅探器?有沒有允許這個代碼嗅探器標準?

<?php 

    /** 
    * project name 
    * 
    * description 
    * 
    * @author First Last <[email protected]> 
    */ 

    class Cookie 
    { 
     public static function set($key, $user, $timeout, $data, $sessionId) 
     { 
     foreach($user as $key => $value) 
     { 
      // some other things 
     } 

     if($key > 1) 
     { 
      // Line length 120 
      // Unix line endings 
      // no counts in loops 
     } 
     elseif($key == 1) 
     { 
      $timeout = TRUE; 
     } 

     switch ($data) 
     { 
      case '1': 
      { 
       // only '' for strings 
      }break; 

      case '2': 
      { 
      }break; 

      default: 
      { 

      }break; 
     } 
     } 

     public static function get($key) 
     { 

     } 

     public static function delete($key) 
     { 

     } 
    } 

?> 

感謝您的回答。

+1

包括整個file_上的4個字符intendation?這是什麼奇怪的編碼標準? :X和大括號'case's?你爲什麼不想採用現有的? PSR-1是一個很好的開始;)(旁邊:如果你問我,你浪費很多,很多(垂直)空間......) – KingCrunch 2012-07-31 11:43:20

+2

我看不到爲什麼我應該保存垂直空間的原因,我從來沒有打印過我的代碼;) 我試過PSR2,但是這個抱怨我的括號(換行),它也不喜歡結尾標籤?> ..但我想要那些,然後它想要一個縮進4行,但我想要3 ... – Pascal 2012-07-31 11:50:13

+0

全球使用2或4作爲標準,爲什麼要3? – 2012-07-31 11:53:23

回答

2

我維護PHP_CodeSniffer,所以人們給我一些嗅探和標準。我還沒有看到確保代碼看起來像你展示的樣本的標準。

您可以使用ruleset.xml文件合併現有的嗅探來創建自己的標準。一些文檔在這裏:http://pear.php.net/manual/en/package.php.php-codesniffer.annotated-ruleset.php

但我知道你不會有所有你需要創建你的標準嗅探。因此,您可以強制執行其中的一部分,並且您可能會發現您決定使用其他一些嗅探器,但是僅IF/ELSEIF(即不適用於SWITCH語句)的括號之間的缺失間距不是在存儲庫中。我知道這不是你所要求的,但是如果你確實考慮使用現有的編碼標準,我建議從包含PEAR標準(也是默認值)開始,因爲它是最不嚴格的。如果你想要更多的規則,PSR2和1標準正在開發中,並且可能在未來很適合,或者如果你有一個龐大的團隊並且想要鎖定,包含的Squiz標準也是有用的遵循最多的風格規則。