【发布时间】:2016-06-22 05:08:58
【问题描述】:
我正在审查 java 代码,有很多类要检查,我做了一个正则表达式 找到一个用 java 编写的方法,它不会在 finally 块中关闭 IO 流。
(?s)(?<=public|private|protected).(?<!finally).*?.close\(\)\;
由于某种原因,这不起作用,它甚至匹配那些最终阻塞的方法,所以下面也找到了
public testMethod(){
InputStream stream = .....
try{
//do something
} finally {
if(stream != null){
stream.close();
}
}
}
虽然只有下面应该匹配
public testMethod(){
InputStream stream = .....
//do something
if(stream != null){
stream.close();
}
}
任何指针?
【问题讨论】:
-
没有
(public|private|protected)也可以在Java中启动一个方法 -
感谢您的回复,但假设我们的编码人员对所有方法都使用了访问修饰符。