フロー解析

java.io.InputStream型の値を作り出したら、それに対して.close()が呼び出されない(可能性が少しでもある)ものを探す。っていう妄想。

stream INSTANCEOF java.io.InputStream
stream MAY NOT FLOW method WHERE {
  method.expression HAS stream
  method.target = #close()
}

要は、

  • 値が生まれた瞬間にその値の特徴を表明できる (INSTANCEOF, など)
  • データフローの可能性を表明できる (MAY NOT, など)
  • 確実に同じ値を持っているということを表明できる (HAS)

という3種類でいろいろなことが書けるんじゃね、ということ。