2015-09-15 16 views
12

私は今、2時間以上、次の行であるデフォルトの要件の代わりに、メソッド宣言と同じ行に{をどのように要求するかを試してみました。これをどうすればいいのですか? PSR2をPSR2という名前の新しいフォルダにコピーして、好きなように変更するようにしました。だから私が取り組んでいるベースは、基本的に私が修正したいPSR2標準です。phpcs:PSR2を修正して、ブレースがメソッドと同じ行にあることを確認するにはどうすればよいですか?

私はruleset.xmlを試しましたが、コードで直接変更せずに修正しようとしました。

<rule ref="PEAR.Classes.ClassDeclaration"> 
    <properties> 
     <property name="eolChar" value="{"/> 
    </properties> 
</rule> 
<rule ref="PSR2R.Classes.ClassDeclaration"> 
    <properties> 
     <property name="eolChar" value="{"/> 
    </properties> 
</rule> 

私はすでに、これは間違っであることを考え出しました。 EOLはphpcsによって設定されます。しかし、ルールで設定できる価値があるかどうかはわかりません。

これは、これまでに(愚かなスペースをネジ!!!)私のために正常に動作します:

<?xml version="1.0"?> 
<ruleset name="PSR2R"> 
    <description>PSR2 with tabs instead of spaces.</description> 
    <arg name="tab-width" value="4"/> 
    <rule ref="PSR2"> 
     <exclude name="Generic.WhiteSpace.DisallowTabIndent"/> 
    </rule> 
    <rule ref="Generic.WhiteSpace.DisallowSpaceIndent"/> 
    <rule ref="Generic.WhiteSpace.ScopeIndent"> 
     <properties> 
      <property name="indent" value="4"/> 
      <property name="tabIndent" value="true"/> 
     </properties> 
    </rule> 
</ruleset> 

しかし、私は上記のルールを追加したいと思います。

+0

こちらもお問い合わせください:https://github.com/squizlabs/PHP_CodeSniffer/issues/703 –

答えて

9

あなたruleset.xmlファイルにこのコードを入れてください:

<rule ref="PSR2"> 
    <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine" /> 
</rule> 
<rule ref="Generic.Functions.OpeningFunctionBraceKernighanRitchie" /> 

PSR2の標準が含まれていますが、同じ行にする必要がブレースに関する特定のメッセージを除外します。次に、メソッドと関数のブレースを次の行に表示するGeneric sniffが含まれています。その変更に伴い

、このコード:

<?php 
namespace Test; 

class Foo 
{ 
    public function bar() { 
    } 
} 

がエラーを生成しませんが、それは1個のエラー生成上に直接PSR2を実行します:あなたの場合、グレッグからの回答に加えて

FILE: temp.php 
---------------------------------------------------------------------- 
FOUND 1 ERROR AFFECTING 1 LINE 
---------------------------------------------------------------------- 
6 | ERROR | [x] Opening brace should be on a new line 
---------------------------------------------------------------------- 
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY 
---------------------------------------------------------------------- 
+0

ありがとうございました!私は除外しなければならなかったルールを理解できませんでした!クラス宣言のために同じものをどのようにアーカイブするのですか?このために変更が必要なルールも知っていますか?すべてのルールについて適切な文書がないことは悲しいことですが、見つけられませんでした。 – burzum

+0

実際には、同じ行にクラスブレースを適用するためのスニッフィングは含まれていません。したがって、カスタムスニッフィングを書くか、コアに何かを追加するための機能リクエストを送信する必要があります。そして、はい、私はそこにドキュメントの欠如があることを知っています、うまくいけば、私はそれをいつか変えることができます。私は一人のチームだけど、フルタイムの仕事と家族を持っているので、私の時間はずっと限られていました。ありがたいことに、多くの善良な人々がプロジェクトにコードを提出しています。ちょうど多くのドキュメントではありません:) –

+0

古いバージョンのCakePHPフレームワークはそれを嗅ぐ必要があります。もし私がそれを識別できれば、私はそれを完了することができれば、phpcsにPRします。私はあなたがこのプロジェクトの主導的な開発者であることを認識していません。その素晴らしいツールをありがとう!何とか私は数ドルを寄付することができますか? :) – burzum

1

をPHPStormを使用している場合はSettings -> Editor -> Inspections -> PHP -> Code Snifferに行き、Show sniff nameというオプションが表示されます。

enter image description here

これはあなたの問題のルール(最初、Settings -> Languages and frameworks -> PHP -> Code snifferにPHPコードスニファ実行ファイルのパスを設定)の名前を与えます。次に、ソースコードファイルの警告ツールチップで、カーソルを注意深く動かし、テキストを選択し、ボタンを離さずにControl Cを押してコピーします。

次にあなたがルールに貼り付け:

<?xml version="1.0"?> 
<ruleset name="PSR2R"> 
    <rule ref="PSR2"> 
     <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine" /> 
     <exclude name="PSR2.Classes.ClassDeclaration.OpenBraceNewLine" /> 
    </rule> 
    <rule ref="Generic.Functions.OpeningFunctionBraceKernighanRitchie" /> 
</ruleset> 

私はここにPSR2.Classes.ClassDeclaration.OpenBraceNewLine除外ルールに追加されました。

関連する問題