miau's blog?

PHP_CodeSniffer 文字数カウントのバグ報告

PHP_CodeSniffer で「一行の文字数は xx 文字まで」みたいなチェックがあるけど、これがマルチバイトの文字幅を考慮せずにバイト数での判定になっていたので改善要望出しておいた。

PEAR :: Request #14237 :: Line length should be measured by mb_strwidth

対応は簡単で、PEAR/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/LineLengthSniff.php の 98 行目付近で strlen() の代わりに mb_strwidth() を使うだけ。まじめに対応するのであれば、mbstring.internal_encoding と対象ファイルの文字コード違う場合も考慮しないといけないんだけど、海外のひとにマルチバイト関連の報告してもまともに対応されたためしがないので、とりあえず小手調べみたいな感じ。

(2010-09-10 追記)対応してくれたみたいで、チケットがクローズされてました。

このバグ報告の途中で、最終行の文字数チェックが走らないことにも気づいてしまった。ついでにこちらもバグ報告しておいた。

PEAR :: Bug #14238 :: Line length not checket at last line of a file

これはそのまんまですね。

(2008-06-28 追記)追記してたら長くなっちゃったので続きます。




もう一つ報告しようと思ってるけどまだやってない件があって。

some_function(
'hoge',
'fuga'
);

みたいに関数の開き括弧の直後に改行を入れると、

2 | ERROR | Space after opening parenthesis of function call prohibited

なんていわれてしまう。Zend Framework なり PEAR なりのコーディング規約ではべつにこの辺禁止されてないと思うんですけど、どうなんでしょ?


それにしても、PEAR のユーザー登録でエラーがでまくったせいで結構時間食ってしまった。他にやらなきゃいけないことはたくさんあるんだけどなぁ。


(2008-06-28 追記)

関数の開き括弧直後の改行について。PEAR ではこんな感じ。

PEAR :: Manual :: Function Calls日本語

「Functions should be called with no spaces between the function name, the opening parenthesis, and the first parameter;」ってことで・・・whitespace(空白文字の総称)じゃなくて space(一般的には U+0020 SPACE のこと?)って書いてるから、

some_function( 'hoge', 'fuga' );

こういう書き方はしないでね、って意図だと思うんだけど。改行は許容されてもいいんじゃないかなぁ。

一方 Zend はこんな。

Zend Framework: Documentation日本語

「引数で array を使う場合は改行してもいいよ」ってことは、基本的に改行するなってこと?

もう独自のルール作って改行を許容するようにしてしまったから、どうでもいいといえばいいんだけど。ちょっとすっきりしないなぁ。
posted at 02:09:00 on 2008-06-26 by miau - Category: PHP No Trackbacks - Permalink

TrackBack

このエントリにトラックバックはありません
現在トラックバックは受け付けていません。

Comments

No comments yet

Add Comments

現在コメントは受け付けていません。
お手数ですが、 こちら のコメント欄にでも記載していただければと思います。