訳あって、ツクールMVのプラグインの中から循環参照を探すことになった。
この場合、オブジェクトに代入処理をしているすべての処理を探り、その中から犯人を捜すことになる。
代入処理をすべて検索するには以下の記述を使う。
this\.(.*)( *)=( *)([^true|false|\d| new (.*)].+)
これは最適化もしてないし、否定条件は使いながら書き換えている。
もちろん他の代入パターンも考えられるが、基本的にはこれで問題ないはずである。
テストに使用したデータは以下の通り。
this.aaa =baa
this.bbb = baa
this.ccc=ccc
this.boo()
this.xxx = true
this.yyy = false
this.zzz =19
this.nnn = new hoge()
this.nnn = new hage(xxxx)