2021-12-27: 再現性チェックを実装した
やったこと
RTA in Japan
昨日からはじまっていたので見ていた。
ロボットのやつとかすごかった。あれ動かせる状態で持ってる人いるんだな。
あとテトリス。テトリスは人を狂わせる。間違いない。
ReDoS
再現性チェックの PR をマージした。
とりあえずデフォルトではオフにしてる。
これ入れるなら attackLimit
とかを下げるのもアリかなという気がしている。
https://github.com/MakeNowJust-Labo/recheck/pull/234
IDA の場合後ろのループ部分の入口の状態に入る遷移は2本あるとは限らないと気付いたので、StaticSeeder
を修正した。
具体的には、ループを一周して入口まで来る場合は1本でも IDA の形になるので、これをどうにかしなくちゃいけない。
けれど、前のループの出ていく遷移は2つ無いとダメなはず。じゃないとループから出ていかないから。
で、これを修正すると /^(fizz)*(fizz)*$/
みたいなのに対して上手くシードを生成できる。
それどころか StaticSeeder
だと見付けられないと思ってた /\/\*.*\*\//
も上手くいくようになってしまった。
本当にファジングする必要あるのか自信がなくなってきた‥‥。
いや、意味はあると思うんだよ、一応。
ちゃんと実験しよう。
https://github.com/MakeNowJust-Labo/recheck/pull/235
最後に、FuzzChecker
の検査結果を Iterator
で返すようにした。
実は再現性チェックの実装を入れたときに AutomatonChecker
の検査結果を Iterator
で返すようにしたので、FuzzChecker
も揃えたというわけ。
Iterator
は遅延するので、多分無駄な計算はしていないと思われる。
ログを見る限りは大丈夫そう。