[Fb-contrib-commit] SF.net SVN: fb-contrib:[1476] trunk/fb-contrib/src/com/mebigfatguy/ fbcontrib/d
Brought to you by:
dbrosius
|
From: <dbr...@us...> - 2010-01-11 04:18:49
|
Revision: 1476
http://fb-contrib.svn.sourceforge.net/fb-contrib/?rev=1476&view=rev
Author: dbrosius
Date: 2010-01-11 04:18:38 +0000 (Mon, 11 Jan 2010)
Log Message:
-----------
using 1.5 now --> use enums
Modified Paths:
--------------
trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/UseSplit.java
Modified: trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/UseSplit.java
===================================================================
--- trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/UseSplit.java 2010-01-11 04:14:19 UTC (rev 1475)
+++ trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/UseSplit.java 2010-01-11 04:18:38 UTC (rev 1476)
@@ -40,19 +40,13 @@
*/
public class UseSplit extends BytecodeScanningDetector
{
- public static final int SEEN_NOTHING = 0;
- public static final int SEEN_STRINGTOKENIZER = 1;
- public static final int SEEN_COUNTTOKENS = 2;
- public static final int SEEN_NEWARRAY = 3;
- public static final int SEEN_HASMORE = 4;
- public static final int SEEN_NEXT = 5;
- public static final int SEEN_ARRAYSTORE = 6;
+ enum State {SEEN_NOTHING, SEEN_STRINGTOKENIZER, SEEN_COUNTTOKENS, SEEN_NEWARRAY, SEEN_HASMORE, SEEN_NEXT, SEEN_ARRAYSTORE}
private BugReporter bugReporter;
private OpcodeStack stack;
- private Map<Integer, Integer> regValueType;
- private int state;
+ private Map<Integer, State> regValueType;
+ private State state;
private int loopStart, loopEnd;
public UseSplit(BugReporter bugReporter) {
@@ -65,7 +59,7 @@
JavaClass cls = classContext.getJavaClass();
if (cls.getMajor() >= MAJOR_1_4) {
stack = new OpcodeStack();
- regValueType = new HashMap<Integer, Integer>();
+ regValueType = new HashMap<Integer, State>();
super.visitClassContext(classContext);
}
} finally {
@@ -83,7 +77,7 @@
public void visitCode(Code obj) {
stack.resetForMethodEntry(this);
regValueType.clear();
- state = SEEN_NOTHING;
+ state = State.SEEN_NOTHING;
loopStart = -1;
loopEnd = -1;
super.visitCode(obj);
@@ -103,38 +97,38 @@
if ((seen == ALOAD) || ((seen >= ALOAD_0) && (seen <= ALOAD_3))) {
int reg = RegisterUtils.getALoadReg(this, seen);
- Integer type = regValueType.get(Integer.valueOf(reg));
+ State type = regValueType.get(Integer.valueOf(reg));
if (type != null)
- state = type.intValue();
+ state = type;
else
- state = SEEN_NOTHING;
+ state = State.SEEN_NOTHING;
return;
}
if ((seen == ASTORE) || ((seen >= ASTORE_0) && (seen <= ASTORE_3))) {
if (stack.getStackDepth() > 0) {
OpcodeStack.Item item = stack.getStackItem(0);
int reg = RegisterUtils.getAStoreReg(this, seen);
- regValueType.put(Integer.valueOf(reg), (Integer)item.getUserValue());
+ regValueType.put(Integer.valueOf(reg), (State)item.getUserValue());
}
- state = SEEN_NOTHING;
+ state = State.SEEN_NOTHING;
return;
}
if ((seen == ILOAD) || ((seen >= ILOAD_0) && (seen <= ILOAD_3))) {
int reg = RegisterUtils.getLoadReg(this, seen);
- Integer type = regValueType.get(Integer.valueOf(reg));
+ State type = regValueType.get(Integer.valueOf(reg));
if (type != null)
- state = type.intValue();
+ state = type;
else
- state = SEEN_NOTHING;
+ state = State.SEEN_NOTHING;
return;
}
if ((seen == ISTORE) || ((seen >= ISTORE_0) && (seen <= ISTORE_3))) {
if (stack.getStackDepth() > 0) {
OpcodeStack.Item item = stack.getStackItem(0);
int reg = RegisterUtils.getStoreReg(this, seen);
- regValueType.put(Integer.valueOf(reg), (Integer)item.getUserValue());
+ regValueType.put(Integer.valueOf(reg), (State)item.getUserValue());
}
- state = SEEN_NOTHING;
+ state = State.SEEN_NOTHING;
return;
}
@@ -145,7 +139,7 @@
if (("java/util/StringTokenizer".equals(getClassConstantOperand()))
&& ("<init>".equals(getNameConstantOperand()))
&& ("(Ljava/lang/String;Ljava/lang/String;)V".equals(getSigConstantOperand())))
- state = SEEN_STRINGTOKENIZER;
+ state = State.SEEN_STRINGTOKENIZER;
}
break;
@@ -155,21 +149,21 @@
String signature = getSigConstantOperand();
if (("countTokens".equals(methodName))
&& ("()I".equals(signature)))
- state = SEEN_COUNTTOKENS;
+ state = State.SEEN_COUNTTOKENS;
else if ("hasMoreTokens".equals(methodName) || "hasMoreElements".equals(methodName))
- state = SEEN_HASMORE;
+ state = State.SEEN_HASMORE;
else if ("nextToken".equals(methodName) || "nextElement".equals(methodName)) {
if ((pc < loopStart) || (pc > loopEnd))
regValueType.clear();
else
- state = SEEN_NEXT;
+ state = State.SEEN_NEXT;
}
}
break;
case SEEN_COUNTTOKENS:
if (seen == ANEWARRAY)
- state = SEEN_NEWARRAY;
+ state = State.SEEN_NEWARRAY;
else if (seen == IF_ICMPGE) {
int target = getBranchTarget() - 3;//sizeof goto
byte[] code = getCode().getCode();
@@ -197,7 +191,7 @@
}
}
}
- state = SEEN_NOTHING;
+ state = State.SEEN_NOTHING;
break;
case SEEN_NEXT:
@@ -205,11 +199,10 @@
if ((pc > loopStart) && (pc < loopEnd)) {
if (stack.getStackDepth() > 2) {
OpcodeStack.Item arrayItem = stack.getStackItem(2);
- Integer arrayType = (Integer)arrayItem.getUserValue();
+ State arrayType = (State)arrayItem.getUserValue();
OpcodeStack.Item elemItem = stack.getStackItem(0);
- Integer elemType = (Integer)elemItem.getUserValue();
- if (((arrayType != null) && (arrayType.intValue() == SEEN_NEWARRAY))
- && ((elemType != null) && (elemType.intValue() == SEEN_NEXT))) {
+ State elemType = (State)elemItem.getUserValue();
+ if ((arrayType == State.SEEN_NEWARRAY) && (elemType == State.SEEN_NEXT)) {
bugReporter.reportBug(new BugInstance(this, "USS_USE_STRING_SPLIT", NORMAL_PRIORITY)
.addClass(this)
.addMethod(this)
@@ -218,15 +211,15 @@
}
}
}
- state = SEEN_NOTHING;
+ state = State.SEEN_NOTHING;
break;
}
} finally {
stack.sawOpcode(this, seen);
- if (state != SEEN_NOTHING) {
+ if (state != State.SEEN_NOTHING) {
if (stack.getStackDepth() > 0) {
OpcodeStack.Item item = stack.getStackItem(0);
- item.setUserValue(Integer.valueOf(state));
+ item.setUserValue(state);
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|