Java 如何使用正则表达式检查连接泄漏?
我必须检查应用程序中的连接泄漏,即未关闭的打开连接 搜索之后,我发现已经打开了数千次连接,但我无法手动查看每个代码片段并检查连接是否关闭 我认为,使用正则表达式是可能的,但事实是,我对正则表达式不太熟悉,所以无法编写正则表达式 请提供一个正则表达式,用于检入打开的连接是否已关闭的大量java文件 我的代码模式是这样的Java 如何使用正则表达式检查连接泄漏?,java,regex,connection,Java,Regex,Connection,我必须检查应用程序中的连接泄漏,即未关闭的打开连接 搜索之后,我发现已经打开了数千次连接,但我无法手动查看每个代码片段并检查连接是否关闭 我认为,使用正则表达式是可能的,但事实是,我对正则表达式不太熟悉,所以无法编写正则表达式 请提供一个正则表达式,用于检入打开的连接是否已关闭的大量java文件 我的代码模式是这样的 try { /* Some code goes here */ con = EJBUtil.getConn
try {
/*
Some code goes here
*/
con = EJBUtil.getConnection(JNDI_NAME);
/*
Some code goes here
*/
}
finally
{
/*
Some code goes here
*/
DBUtil.close(con);
or
closeConnection.close(con);
/*
Some code goes here
*/
}
正则表达式不是这里的好工具。只需在文件中搜索
getConnection
,然后在close
中搜索相应的变量。作为第一个剪切,运行或覆盖代码。这两种方法都有用于检测数据库资源未正确关闭或可能未正确关闭的源代码的规则。它们可能会突出显示许多其他值得解决的问题。您可以编写脚本来计算打开和关闭子句的数量例如,这一个(perl脚本)输出的文件中有一行未关闭开括号: #!/usr/bin/perl -w # brackets.pl: output filenames with unmatched brackets (with hint to linenumber) # example: ./brackets *.c while(<>) { if(!defined($f) or $f ne $ARGV){$f=$ARGV;$l=0} $l++; push @ar,"$f: $l" if(/{/); pop @ar if(/}/) } print"$_\n" for(@ar); #!/usr/bin/perl-w #括号.pl:带有不匹配括号的输出文件名(带有行号提示) #示例:./括号*.c while() { 如果(!defined($f)或$f ne$ARGV){$f=$ARGV;$l=0} $l++; 按@ar,“$f:$l”如果(/{/); pop@ar if(/}/) } 为(@ar)打印“$\un”;
您可以用正则表达式替换方括号最后我这样做了,搜索了所有getn连接:(