Eclipse搜索正则:查找调用getConnection但缺失closeConnection的方法
Eclipse正则查找未关闭自定义数据库连接的方法
搜索前置配置
打开Eclipse搜索窗口(快捷键Ctrl+H),切换到「File Search」标签页,做如下配置:
- 勾选「Regular expression」(正则表达式)和「Case sensitive」(区分大小写)
File name patterns处填写*.java,限定仅搜索Java源码文件- 按需选择搜索范围(整个工作区/当前项目/指定文件夹)
可用正则表达式
(?s)(public|protected|private|static|\s) +[\w\<\>\[\]]+\s+(\w+) *\([^\)]*\) *\{(?:(?!\bcloseConnection\s*\()|\btry\s*\([^)]*getConnection|\bgetConnection\s*\()*?\bgetConnection\s*\((?!\}\s*$)[^{}]*\}
规则说明
- 开头的
(?s)开启DOTALL模式,让.可以匹配换行符,适配Java方法多行编写的场景 - 前半段匹配标准Java方法定义,覆盖public/protected/private修饰符、静态方法、返回值带泛型等常见写法
- 核心逻辑限定在方法体范围内:匹配存在
getConnection()调用、同时不存在closeConnection()调用的方法 - 默认自动排除try-with-resources中调用
getConnection的场景(这类连接会自动释放,无需手动关闭)
调整适配说明
- 如果你的
getConnection或closeConnection方法需要传入参数,将正则中对应的\s*\(替换为\s*\([^)]*\)即可适配 - 受正则语法限制,极端复杂的多层嵌套代码块可能出现少量误判,搜索结果出来后手动核对即可
- 如果不需要排除try-with-resources场景,删掉正则中
|\btry\s*\([^)]*getConnection这一段即可
内容的提问来源于stack exchange,提问作者jitendra
相关产品推荐
相关产品推荐

