やっぱりsakuraのバグだったのね。
sakuraエディタの正規表現で、「~でない文字」にマッチさせるには、例えばA以外なら、
[^A]
と指定しないとだめぽいのですが、これがどうにもバグっていて困りました。10月の頭から気づいていたのですが、やっと時間が取れたので調べようと思って自宅で最新版をインストールしたら、現象が再現しないんでやんの(笑
History/1.6.6.0
http://sakura.qp.land.to/?cmd=read&page=History/1.6.6.0#o63de5a1
・・・
Grep正規表現の「^」・戻り読みの不具合の修正 (svn:1836 patches:3056638 dev:5685 unicode:1213 もか)
・・・
# 差分を見ただけですが、関係あるっぽい。
というわけで、正規表現のサンプルです。
例えばc++のソースで
//コメントの行末に空白(スペースかタブ)を付ける
というコーディング規約があるとすると、違反しているコメント行を探すには・・・
□検索条件 ".*//.*[^\\s]$"
検索対象 *.c *.cpp *.cxx *.h
フォルダ C:\cygwin\home\yasuda\src\gdb-6.7.1\
・・・
1275 個が検索されました。
# \\sは検索ダイアログで\sと入力すればよいです。
ただしこれだと、コメント中の「http://」とかにも反応しちゃいますけどね。
で、ルールを守っているコメント行を検索して、
□検索条件 ".*//.*[\\s]$"
検索対象 *.c *.cpp *.cxx *.h
フォルダ C:\cygwin\home\yasuda\src\gdb-6.7.1\
・・・
C:\cygwin\home\yasuda\src\gdb-6.7.1\sim\common\sim-events.h(58,1) [SJIS]: .... // prime main loop
1 個が検索されました。
# おぉ。gdbのソースにもそんな奇特なコメント行がありました。
検証の為に、全ての//コメント行を検索、と。
□検索条件 ".*//.*"
検索対象 *.c *.cpp *.cxx *.h
フォルダ C:\cygwin\home\yasuda\src\gdb-6.7.1\
・・・
1276 個が検索されました。
ここで、1276=1275+1が成り立っていないと、検索のバグと考えられます。
これでperlスクリプトを書かずに済みそうですな。
というか、コーディングルールっていまどきは、ツールで検出して違反ゼロ件がデフォルト。やむをえない場合は意見書添付と合わせてコーディング工程の完了基準のひとつにしているのが普通だと思ったんですけど。
そんな単純作業も昔はバイト君の仕事、今は水増し請求の飯の種と。
これを応用していただければ、以下のようなイミフなルールにも対応できると思います。
- //コメントの末尾に特定の文字が無い行
- 1行コメントの末尾に日本語がある行
↓↓↓こういうのも立ち読みしてます。
![改訂版 組込みソフトウェア開発向けコーディング作法ガイド[C言語] (SEC BOOKS) 改訂版 組込みソフトウェア開発向けコーディング作法ガイド[C言語] (SEC BOOKS)](http://ecx.images-amazon.com/images/I/41zx-1Qx%2BUL._SL160_.jpg)
改訂版 組込みソフトウェア開発向けコーディング作法ガイド[C言語] (SEC BOOKS)
- 作者: 独立行政法人情報処理推進機構ソフトウェア・エンジニアリング・センター
- 出版社/メーカー: 翔泳社
- 発売日: 2007/07/25
- メディア: 大型本
- クリック: 15回
- この商品を含むブログ (2件) を見る
コメント