プロジェクト

全般

プロフィール

Bug(バグ) #2503

完了

コーディング規約チェックのルールにおいて制御構造のブロックで空白が考慮されていない

Yuya Watanabe さんが約13年前に追加. 約8年前に更新.

ステータス:
Invalid(無効)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2011-10-18
期日:
進捗率:

0%

予定工数:
3.6 で発生するか:
Yes (はい)
3.8 で発生するか:
Yes (はい)

説明

改行

コーディング規約チェックのルールで制御構造のブロックで空白が考慮されていない.

data/CodingStandard/OpenPNE3/Sniffs/WhiteSpace/ControlSignatureSniff.php

 19   protected function getPatterns()
 20   {
 21     return array(
 22        'tryEOL{EOL...}EOLcatch (...)EOL{EOL',
 23        'doEOL{EOL...}EOLwhile (...);EOL',
 24        'while (...)EOL{EOL',
 25        'for (...)EOL{EOL',
 26        'if (...)EOL{EOL',
 27        'foreach (...)EOL{EOL',
 28        '}EOLelseif (...)EOL{EOL',
 29        '}EOLelseEOL{EOL',
 30     );
 31   }

修正案

下記のように修正.

diff --git a/data/CodingStandard/OpenPNE3/Sniffs/WhiteSpace/ControlSignatureSniff.php b/data/CodingStandard/OpenPNE3/Sniffs/WhiteSpace/ControlSignatureSniff.php
index d89fd62..b05ca6a 100644
--- a/data/CodingStandard/OpenPNE3/Sniffs/WhiteSpace/ControlSignatureSniff.php
+++ b/data/CodingStandard/OpenPNE3/Sniffs/WhiteSpace/ControlSignatureSniff.php
@@ -19,14 +19,14 @@ class OpenPNE3_Sniffs_WhiteSpace_ControlSignatureSniff extends PHP_CodeSniffer_S
   protected function getPatterns()
   {
     return array(
-       'tryEOL{EOL...}EOLcatch (...)EOL{EOL',
-       'doEOL{EOL...}EOLwhile (...);EOL',
-       'while (...)EOL{EOL',
-       'for (...)EOL{EOL',
-       'if (...)EOL{EOL',
-       'foreach (...)EOL{EOL',
-       '}EOLelseif (...)EOL{EOL',
-       '}EOLelseEOL{EOL',
+       'tryEOL *{EOL...}EOL *catch (...)EOL *{EOL',
+       'doEOL *{EOL...}EOL *while (...);EOL',
+       'while (...)EOL *{EOL',
+       'for (...)EOL *{EOL',
+       'if (...)EOL *{EOL',
+       'foreach (...)EOL *{EOL',
+       '}EOL *elseif (...)EOL *{EOL',
+       '}EOL *elseEOL *{EOL',
     );
   }
 }

関連するチケット 3 (1件未完了2件完了)

関連している OpenPNE 3 - Enhancement(機能追加・改善) #4004: PHP_CodeSniffer 最新版で動作するようにするRejected(差し戻し)Youichi Kimura2016-09-02

操作
コピー先 OpenPNE 3 - Backport(バックポート) #3642: コーディング規約チェックのルールにおいて制御構造のブロックで空白が考慮されていないInvalid(無効)Youichi Kimura2011-10-18

操作
コピー先 OpenPNE 3 - Backport(バックポート) #3666: コーディング規約チェックのルールにおいて制御構造のブロックで空白が考慮されていないInvalid(無効)Youichi Kimura2014-07-15

操作

wa ta さんが約13年前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 307729cb350ce8fd290aa78d1a61c4f31717cf71 で適用されました。

Shouta Kashiwagi さんが12年以上前に更新

  • 対象バージョンOpenPNE 3.7.0 から 252 に変更

Shouta Kashiwagi さんが12年以上前に更新

  • 対象バージョン252 から OpenPNE 3.8.x に変更

Shinichi Urabe さんが10年以上前に更新

  • 対象バージョンOpenPNE 3.8.x から OpenPNE 3.8.12 に変更
  • 3.6 で発生するかUnknown (未調査) にセット
  • 3.8 で発生するかUnknown (未調査) にセット

誠二 天重 さんが10年以上前に更新

誠二 天重 さんが10年以上前に更新

  • 対象バージョンOpenPNE 3.8.12 から OpenPNE 3.8.x に変更

誠二 天重 さんが10年以上前に更新

  • 対象バージョンOpenPNE 3.8.x から OpenPNE 3.9.0-old に変更

isao sano さんが10年以上前に更新

kaoru n さんが9年以上前に更新

  • 担当者 を削除 (Yuya Watanabe)

kaoru n さんが8年以上前に更新

  • 担当者Youichi Kimura にセット

Youichi Kimura さんが約8年前に更新

  • 3.6 で発生するかUnknown (未調査) から Yes (はい) に変更
  • 3.8 で発生するかUnknown (未調査) から Yes (はい) に変更

現在 OpenPNE3 の data/CodingStandard/OpenPNE3 以下にあるファイルは PHP_CodeSniffer 1.2.x でないと動作しない。
かなり古いバージョンであることは問題ではあるが、ひとまず下記の手順で動作確認はできた。

$ mkdir phpcs
$ cd phpcs
$ cat > composer.json <<'EOF'
{
  "repositories": [
    {
      "type": "pear",
      "url": "https://pear.php.net/" 
    }
  ],
  "require": {
    "pear-pear/PHP_CodeSniffer": "1.2.2",
    "pear-pear/PEAR": "^1.4.0b1" 
  }
}
EOF
$ composer update
$ ./vendor/bin/composer-php ./vendor/bin/phpcs --standard=/home/upsilon/git/openpne3/data/CodingStandard/OpenPNE3 /home/upsilon/git/openpne3/lib/util/opToolkit.class.php

Youichi Kimura さんが約8年前に更新

  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更

PHP_CodeSniffer_Standards_AbstractPatternSniff には ' *' のように可変長の空白文字にのみマッチさせる構文は存在しません。
実際に 307729cb を適用した状態で phpcs を実行すると確かに「if (...)\n {」などに対するエラーは表示されなくなりますが、コーディング規約に違反した「if (...) {」(中括弧の前に改行がない) に対してもエラーが出なくなっています。

kaoru n さんが約8年前に更新

1. stable-3.6.x にしか入っていない 6ca5dcd8 ( #1744 )を master, stable-3.8.x にも追加→ #4002 #4003
2. #2503 および関連するBackportチケットは不要になるのでInvalidにする→しました
3. PHP_CodeSniffer最新版で動く状態にする→ #4004

kaoru n さんが約8年前に更新

  • ステータスRejected(差し戻し) から Invalid(無効) に変更
  • 進捗率50 から 0 に変更

#2503-13 により無効とします

kaoru n さんが約8年前に更新

他の形式にエクスポート: Atom PDF