[Fb-contrib-commit] SF.net SVN: fb-contrib:[1442] trunk/fb-contrib/src/com/mebigfatguy/ fbcontrib/
Brought to you by:
dbrosius
|
From: <dbr...@us...> - 2010-01-05 07:09:46
|
Revision: 1442
http://fb-contrib.svn.sourceforge.net/fb-contrib/?rev=1442&view=rev
Author: dbrosius
Date: 2010-01-05 07:09:39 +0000 (Tue, 05 Jan 2010)
Log Message:
-----------
using 1.5 now --> use enums
Modified Paths:
--------------
trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/ListIndexedIterating.java
Modified: trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/ListIndexedIterating.java
===================================================================
--- trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/ListIndexedIterating.java 2010-01-05 07:05:04 UTC (rev 1441)
+++ trunk/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/ListIndexedIterating.java 2010-01-05 07:09:39 UTC (rev 1442)
@@ -41,22 +41,15 @@
*/
public class ListIndexedIterating extends BytecodeScanningDetector
{
- private static final int SEEN_NOTHING = 0;
- private static final int SEEN_IINC = 1;
+ enum State {SAW_NOTHING, SAW_IINC}
+ enum LoopState {LOOP_NOT_STARTED, LOOP_INDEX_LOADED_FOR_TEST, LOOP_IN_BODY, LOOP_IN_BODY_WITH_GET}
+ enum Stage {FIND_LOOP_STAGE, FIND_BUG_STAGE}
- private static final int LOOP_NOT_STARTED = 0;
- private static final int LOOP_INDEX_LOADED_FOR_TEST = 1;
- private static final int LOOP_IN_BODY = 2;
- private static final int LOOP_IN_BODY_WITH_GET = 3;
-
- private static final int FIND_LOOP_STAGE = 0;
- private static final int FIND_BUG_STAGE = 1;
-
private BugReporter bugReporter;
private OpcodeStack stack;
private Set<ForLoop> possibleForLoops;
- private int stage;
- private int state;
+ private Stage stage;
+ private State state;
private int loopReg;
private boolean sawListSize;
@@ -108,14 +101,14 @@
sawListSize = false;
stack.resetForMethodEntry(this);
- state = SEEN_NOTHING;
- stage = FIND_LOOP_STAGE;
+ state = State.SAW_NOTHING;
+ stage = Stage.FIND_LOOP_STAGE;
super.visitCode(obj);
if (sawListSize) {
stack.resetForMethodEntry(this);
- state = SEEN_NOTHING;
- stage = FIND_BUG_STAGE;
+ state = State.SAW_NOTHING;
+ stage = Stage.FIND_BUG_STAGE;
super.visitCode(obj);
}
}
@@ -128,7 +121,7 @@
*/
@Override
public void sawOpcode(final int seen) {
- if (stage == FIND_LOOP_STAGE)
+ if (stage == Stage.FIND_LOOP_STAGE)
sawOpcodeLoop(seen);
else
sawOpcodeBug(seen);
@@ -144,14 +137,14 @@
stack.mergeJumps(this);
switch (state) {
- case SEEN_NOTHING:
+ case SAW_NOTHING:
if ((seen == IINC) && (getIntConstant() == 1)) {
loopReg = getRegisterOperand();
- state = SEEN_IINC;
+ state = State.SAW_IINC;
}
break;
- case SEEN_IINC:
+ case SAW_IINC:
if ((seen == GOTO) || (seen == GOTO_W)) {
int branchTarget = getBranchTarget();
int pc = getPC();
@@ -159,7 +152,7 @@
possibleForLoops.add(new ForLoop( branchTarget, pc, loopReg));
}
}
- state = SEEN_NOTHING;
+ state = State.SAW_NOTHING;
break;
}
@@ -191,7 +184,7 @@
if (getPC() == fl.getLoopStart()) {
if ((seen == ILOAD) || ((seen >= ILOAD_0) && (seen <= ILOAD_3))) {
if (getReg(seen, ILOAD, ILOAD_0) == fl.getLoopReg()) {
- fl.setLoopState(LOOP_INDEX_LOADED_FOR_TEST);
+ fl.setLoopState(LoopState.LOOP_INDEX_LOADED_FOR_TEST);
continue;
}
}
@@ -214,7 +207,7 @@
}
int branchTarget = getBranchTarget();
if ((branchTarget >= (fl.getLoopEnd() + 3)) && (branchTarget <= (fl.getLoopEnd() + 5))) {
- fl.setLoopState(LOOP_IN_BODY);
+ fl.setLoopState(LoopState.LOOP_IN_BODY);
continue;
}
}
@@ -222,7 +215,7 @@
case LOOP_IN_BODY:
case LOOP_IN_BODY_WITH_GET:
- if ((getPC() == fl.getLoopEnd()) && (fl.getLoopState() == LOOP_IN_BODY_WITH_GET)) {
+ if ((getPC() == fl.getLoopEnd()) && (fl.getLoopState() == LoopState.LOOP_IN_BODY_WITH_GET)) {
bugReporter.reportBug(new BugInstance( this, "LII_LIST_INDEXED_ITERATING", NORMAL_PRIORITY )
.addClass(this)
.addMethod(this)
@@ -245,7 +238,7 @@
if (!sawGet) {
it.remove();
} else {
- fl.setLoopState(LOOP_IN_BODY_WITH_GET);
+ fl.setLoopState(LoopState.LOOP_IN_BODY_WITH_GET);
if (stack.getStackDepth() > 1) {
OpcodeStack.Item itm = stack.getStackItem(0);
if (!itm.couldBeZero())
@@ -291,7 +284,7 @@
private int loopStart;
private int loopEnd;
private int loopReg;
- private int loopState;
+ private LoopState loopState;
private boolean loopRegLoaded;
private OpcodeStack.Item loopCollectionItem;
@@ -306,7 +299,7 @@
loopStart = start;
loopEnd = end;
loopReg = reg;
- loopState = LOOP_NOT_STARTED;
+ loopState = LoopState.LOOP_NOT_STARTED;
loopRegLoaded = false;
loopCollectionItem = null;
}
@@ -343,7 +336,7 @@
*
* @param state the new state
*/
- public void setLoopState(final int state) {
+ public void setLoopState(final LoopState state) {
loopState = state;
}
@@ -352,7 +345,7 @@
*
* @return the current state
*/
- public int getLoopState() {
+ public LoopState getLoopState() {
return loopState;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|