diff options
author | Tor Norbye <tnorbye@google.com> | 2012-09-30 18:33:10 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2012-10-01 07:48:15 -0700 |
commit | e17a584bb50ea049323b78518dd56ac5e73ac40a (patch) | |
tree | e6bdcedf309d3fcf14afd14c43dc456ee381a743 /lint | |
parent | 07a6a33b30f30370e96284ecb55d71375c075bab (diff) | |
download | sdk-e17a584bb50ea049323b78518dd56ac5e73ac40a.zip sdk-e17a584bb50ea049323b78518dd56ac5e73ac40a.tar.gz sdk-e17a584bb50ea049323b78518dd56ac5e73ac40a.tar.bz2 |
38002: Lint WakeLock Check Ignores Try-Finally
Change-Id: I4009ef5ffabedaa43158991657068edcaa6e80e0
Diffstat (limited to 'lint')
4 files changed, 36 insertions, 3 deletions
diff --git a/lint/libs/lint_checks/src/com/android/tools/lint/checks/ControlFlowGraph.java b/lint/libs/lint_checks/src/com/android/tools/lint/checks/ControlFlowGraph.java index 435c3dc..b7e5787 100644 --- a/lint/libs/lint_checks/src/com/android/tools/lint/checks/ControlFlowGraph.java +++ b/lint/libs/lint_checks/src/com/android/tools/lint/checks/ControlFlowGraph.java @@ -185,7 +185,11 @@ public class ControlFlowGraph { // debug not installed: just do toString() on the instructions } if (!printed) { - sb.append(instruction.toString()); + if (instruction.getType() == AbstractInsnNode.METHOD_INSN) { + sb.append("(" + ((MethodInsnNode)instruction).name + ")"); + } else { + sb.append(instruction.toString()); + } } } @@ -239,9 +243,8 @@ public class ControlFlowGraph { if (tcb.type == null) { // finally block: not an exception path getNode(curr).addSuccessor(handlerNode); - } else { - getNode(curr).addExceptionPath(handlerNode); } + getNode(curr).addExceptionPath(handlerNode); } curr = curr.getNext(); } diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/WakelockDetectorTest.java b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/WakelockDetectorTest.java index e2830e0..aaf588c 100644 --- a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/WakelockDetectorTest.java +++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/WakelockDetectorTest.java @@ -132,4 +132,17 @@ public class WakelockDetectorTest extends AbstractCheckTest { "bytecode/WakelockActivity6.class.data=>bin/classes/test/pkg/WakelockActivity6.class" )); } + + public void test7() throws Exception { + assertEquals( + "No warnings.", + + lintProject( + "bytecode/.classpath=>.classpath", + "bytecode/AndroidManifest.xml=>AndroidManifest.xml", + "res/layout/onclick.xml=>res/layout/onclick.xml", + "bytecode/WakelockActivity7.java.txt=>src/test/pkg/WakelockActivity7.java", + "bytecode/WakelockActivity7.class.data=>bin/classes/test/pkg/WakelockActivity7.class" + )); + } } diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/bytecode/WakelockActivity7.class.data b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/bytecode/WakelockActivity7.class.data Binary files differnew file mode 100644 index 0000000..289b0d3 --- /dev/null +++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/bytecode/WakelockActivity7.class.data diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/bytecode/WakelockActivity7.java.txt b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/bytecode/WakelockActivity7.java.txt new file mode 100644 index 0000000..be48dac --- /dev/null +++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/bytecode/WakelockActivity7.java.txt @@ -0,0 +1,17 @@ +package test.pkg; + +import android.os.PowerManager.WakeLock; + +public class WakelockActivity7 { + public void test(WakeLock lock) { + try { + lock.acquire(); + new Runnable() { + public void run() { + } + }; + } finally { + lock.release(); + } + } +} |