aboutsummaryrefslogtreecommitdiffstats
path: root/lint
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2012-09-30 18:33:10 -0700
committerTor Norbye <tnorbye@google.com>2012-10-01 07:48:15 -0700
commite17a584bb50ea049323b78518dd56ac5e73ac40a (patch)
treee6bdcedf309d3fcf14afd14c43dc456ee381a743 /lint
parent07a6a33b30f30370e96284ecb55d71375c075bab (diff)
downloadsdk-e17a584bb50ea049323b78518dd56ac5e73ac40a.zip
sdk-e17a584bb50ea049323b78518dd56ac5e73ac40a.tar.gz
sdk-e17a584bb50ea049323b78518dd56ac5e73ac40a.tar.bz2
38002: Lint WakeLock Check Ignores Try-Finally
Change-Id: I4009ef5ffabedaa43158991657068edcaa6e80e0
Diffstat (limited to 'lint')
-rw-r--r--lint/libs/lint_checks/src/com/android/tools/lint/checks/ControlFlowGraph.java9
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/WakelockDetectorTest.java13
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/bytecode/WakelockActivity7.class.databin0 -> 798 bytes
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/bytecode/WakelockActivity7.java.txt17
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
new 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
Binary files differ
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();
+ }
+ }
+}