[Fb-contrib-commit] fb-contrib/src/com/mebigfatguy/fbcontrib/detect CustomBuiltXML.java,1.1,1.2
Brought to you by:
dbrosius
|
From: Dave B. <dbr...@us...> - 2005-12-31 02:44:36
|
Update of /cvsroot/fb-contrib/fb-contrib/src/com/mebigfatguy/fbcontrib/detect In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14248/src/com/mebigfatguy/fbcontrib/detect Modified Files: CustomBuiltXML.java Log Message: =" isn't a valid predictor of xml, it could be sql, or otherwise. So count them, but you need more than that to report. Index: CustomBuiltXML.java =================================================================== RCS file: /cvsroot/fb-contrib/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/CustomBuiltXML.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- CustomBuiltXML.java 30 Dec 2005 06:33:43 -0000 1.1 +++ CustomBuiltXML.java 31 Dec 2005 02:44:27 -0000 1.2 @@ -18,8 +18,8 @@ */ package com.mebigfatguy.fbcontrib.detect; -import java.util.ArrayList; -import java.util.List; +import java.util.HashMap; +import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -33,23 +33,24 @@ public class CustomBuiltXML extends BytecodeScanningDetector implements StatelessDetector { - private static final List<Pattern> xmlPatterns = new ArrayList<Pattern>(); + private static final Map<Pattern, Boolean> xmlPatterns = new HashMap<Pattern, Boolean>(); static { - xmlPatterns.add(Pattern.compile(".*<[a-zA-Z_](\\w)*>.*")); - xmlPatterns.add(Pattern.compile(".*</[a-zA-Z_](\\w)*>.*")); - xmlPatterns.add(Pattern.compile(".*<[a-zA-Z_](\\w)*/>.*")); - xmlPatterns.add(Pattern.compile(".*<(//)?$")); - xmlPatterns.add(Pattern.compile("^(//)?>.*")); - xmlPatterns.add(Pattern.compile(".*=(\\s)*[\"'].*")); - xmlPatterns.add(Pattern.compile("^[\"']>.*")); - xmlPatterns.add(Pattern.compile(".*<!\\[CDATA\\[.*", Pattern.CASE_INSENSITIVE)); - xmlPatterns.add(Pattern.compile(".*\\]\\]>.*")); - xmlPatterns.add(Pattern.compile(".*xmlns:.*")); + xmlPatterns.put(Pattern.compile(".*<[a-zA-Z_](\\w)*>.*"), Boolean.TRUE); + xmlPatterns.put(Pattern.compile(".*</[a-zA-Z_](\\w)*>.*"), Boolean.TRUE); + xmlPatterns.put(Pattern.compile(".*<[a-zA-Z_](\\w)*/>.*"), Boolean.TRUE); + xmlPatterns.put(Pattern.compile(".*<(//)?$"), Boolean.TRUE); + xmlPatterns.put(Pattern.compile("^(//)?>.*"), Boolean.TRUE); + xmlPatterns.put(Pattern.compile(".*=(\\s)*[\"'].*"), Boolean.FALSE); + xmlPatterns.put(Pattern.compile("^[\"']>.*"), Boolean.TRUE); + xmlPatterns.put(Pattern.compile(".*<!\\[CDATA\\[.*", Pattern.CASE_INSENSITIVE), Boolean.TRUE); + xmlPatterns.put(Pattern.compile(".*\\]\\]>.*"), Boolean.TRUE); + xmlPatterns.put(Pattern.compile(".*xmlns:.*"), Boolean.TRUE); } private static final String CBX_MIN_REPORTABLE_ITEMS = "fb-contrib.cbx.minxmlitems"; private BugReporter bugReporter; private OpcodeStack stack = new OpcodeStack(); private int xmlItemCount = 0; + private int xmlConfidentCount = 0; private int lowReportingThreshold; private int midReportingThreshold; private int highReportingThreshold; @@ -88,7 +89,8 @@ xmlItemCount = 0; firstPC = -1; super.visitCode(obj); - if (xmlItemCount >= lowReportingThreshold) { + if ((xmlItemCount >= lowReportingThreshold) + && (xmlConfidentCount > (lowReportingThreshold >> 1))) { bugReporter.reportBug( new BugInstance( this, "CBX_CUSTOM_BUILT_XML", (xmlItemCount >= highReportingThreshold) ? HIGH_PRIORITY : @@ -140,10 +142,12 @@ if (strCon.trim().length() == 0) return; - for (Pattern p : xmlPatterns) { - Matcher m = p.matcher(strCon); + for (Map.Entry<Pattern, Boolean> entry : xmlPatterns.entrySet()) { + Matcher m = entry.getKey().matcher(strCon); if (m.matches()) { xmlItemCount++; + if (entry.getValue().booleanValue()) + xmlConfidentCount++; if (firstPC < 0) firstPC = getPC(); break; |