バグ見つけがてら

1145 letters | 544 views | コメントする

一つは、前回の高速置換に変更した部分で、
確認せずに一括で置換するのは問題ないが、途中から確認やめて全部やらせる際、
その、切り替わった瞬間での後方置換だか前方置換だかが上手く動かない。
といっても、試したのは$0だけで、1から9は試してない。
検索して見つかってから、確認ダイアログ出して閉じてってやってる間に、
検索ヒットした文字をハイライトする動作が入るので、
それのせいで前方置換だか後方置換だかの結果がすり替えられてしまうっていた。
これは、検索用のオブジェクトとハイライト用のオブジェクトを分けてない設計がまずいのだが、
このまずい設計の方がスピードが出せるということでそうしたみたいで覚えてない。
覚えてないから、まずくない設計に直すかというと、遅くなるからまずいままで不具合回避する。

もう一つ見つけたバグも複雑な条件なのだが、
正規表現を使わない検索語句のハイライトをしていて、
折り返して2行目以降に追いやられた場所にヒットした場合で、
しかも1行目にタブ文字が入るなどして、2行目以降より文字数が少なくなる場合で、
2行目以降のハイライトなのに1行目の文字数を参考にしてしまって、
それを超える位置でのハイライトをやめてしまうというバグが、、、って説明長い。
これはずっと潜在していたのに自分で見つけられなかったのはそういう複雑な条件だから。

さて作業だが、結局PHPは大量のキーワードを比較することになって、
スピードが心配だったが、やってみたらたいしたことはなかった。
いや、たぶん大したことはあるんだろうけど、描画APIの遅さに比べたら全然小さい。
よって、VBの方も3段階のキーワードをやろうと思ったのだが、
VBは予約語と関数以外にどこに手を出すのが重要かが判断できない。
PHPのような定数っぽいのは、.NET風のピリオドが付く名前になってたりするし。
そういうわけで、VBはとりあえず2段階にするか。

あと、C#だが、2.0追加分だけでなく、overrideやinterface等も抜けていたが理由は不明。
自分がどこを参考にしてキーワードを並べたのかわからない。

とりあえずこんな感じの作業した。

たぶん関連のある記事:

コメントは終了しています。