Analyzing Dataflow with IntelliJ IDEA

http://blogs.jetbrains.com/idea/2009/08/analyzing-dataflow-with-intellij-idea/


こうゆう事できるから「とりあえずJavaで組んどけ」って言いたくなる。
"Dataflow to This"はIDEA8から追加された機能で,メソッドの引数やフィールドがどこから連鎖して来たかをしらべてくれる機能だ(Call Hierarchyのパラメタ版って感じ)。といってもIDEA8のそれは,用がなかった/使い道がわからんかったの理由でほとんど使った事が無かったワケだが。


で,ちょうど大昔に誰ぞが組んだレガシーコードの解析してるんで,Maia EAPで強化されたそれを使ってみたんだが,すげー便利で鼻水出た。:-)
何が出来るかの詳細については,上記ブログのエントリを参照してほしいんだけど,IDEA9からは調査した対象(メソッド引数かフィールド)に「どんな値が設定されうるか」で分類できるんだと("Group by leaf expression"っての)。実際試してみると中には追いきれないのもあるけど,ちゃんと「args[1]」とか出て来て,どっから値が発生したのか追えてもうわろす,わろす。


相変わらずコードの解析させたら,頼りがいありまくりのIntelliJなんだが,これってソースがJavaだからってのが大きいんだよね。Groovyサポートもかなり良いセンいってんだけど,AnalyzeメニューのほとんどはJavaじゃないと反応しない。ま,仕方ないけど。:-(
そんなワケで,IDEの超強力なサポート込みでJavaの魅力なのだと,あらためて再認識してたりする。動的言語なGroovyにJava並みのIDEサポートは期待してないけど,せめてScalaJava並みになってほしいなって思う。
#今だとGroovyサポートのほうがScalaサポートより遥かに強力だったりする>IntelliJ