Loading tools/lint/framework/checks/src/main/java/com/google/android/lint/parcel/SaferParcelChecker.kt +47 −21 Original line number Diff line number Diff line Loading @@ -16,13 +16,21 @@ package com.google.android.lint.parcel import com.android.tools.lint.detector.api.* import com.android.tools.lint.detector.api.Category import com.android.tools.lint.detector.api.Context import com.android.tools.lint.detector.api.Detector import com.android.tools.lint.detector.api.Implementation import com.android.tools.lint.detector.api.Issue import com.android.tools.lint.detector.api.JavaContext import com.android.tools.lint.detector.api.Scope import com.android.tools.lint.detector.api.Severity import com.android.tools.lint.detector.api.SourceCodeScanner import com.android.tools.lint.detector.api.UastLintUtils import com.intellij.psi.PsiMethod import com.intellij.psi.PsiSubstitutor import com.intellij.psi.PsiType import com.intellij.psi.PsiTypeParameter import org.jetbrains.uast.UCallExpression import java.util.* @Suppress("UnstableApiUsage") class SaferParcelChecker : Detector(), SourceCodeScanner { Loading Loading @@ -67,7 +75,7 @@ class SaferParcelChecker : Detector(), SourceCodeScanner { """, category = Category.SECURITY, priority = 8, severity = Severity.WARNING, severity = Severity.ERROR, implementation = Implementation( SaferParcelChecker::class.java, Loading @@ -76,30 +84,48 @@ class SaferParcelChecker : Detector(), SourceCodeScanner { ) // Parcel private val PARCEL_METHOD_READ_SERIALIZABLE = Method("android.os.Parcel", "readSerializable", listOf()) private val PARCEL_METHOD_READ_ARRAY_LIST = Method("android.os.Parcel", "readArrayList", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_LIST = Method("android.os.Parcel", "readList", listOf("java.util.List", "java.lang.ClassLoader")) private val PARCEL_METHOD_READ_PARCELABLE = Method(listOf("T"), "android.os.Parcel", "readParcelable", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_PARCELABLE_LIST = Method(listOf("T"), "android.os.Parcel", "readParcelableList", listOf("java.util.List<T>", "java.lang.ClassLoader")) private val PARCEL_METHOD_READ_SPARSE_ARRAY = Method(listOf("T"), "android.os.Parcel", "readSparseArray", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_ARRAY = Method("android.os.Parcel", "readArray", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_PARCELABLE_ARRAY = Method("android.os.Parcel", "readParcelableArray", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_SERIALIZABLE = Method("android.os.Parcel", "readSerializable", listOf()) private val PARCEL_METHOD_READ_ARRAY_LIST = Method("android.os.Parcel", "readArrayList", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_LIST = Method("android.os.Parcel", "readList", listOf("java.util.List", "java.lang.ClassLoader")) private val PARCEL_METHOD_READ_PARCELABLE = Method(listOf("T"), "android.os.Parcel", "readParcelable", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_PARCELABLE_LIST = Method(listOf("T"), "android.os.Parcel", "readParcelableList", listOf("java.util.List<T>", "java.lang.ClassLoader")) private val PARCEL_METHOD_READ_SPARSE_ARRAY = Method(listOf("T"), "android.os.Parcel", "readSparseArray", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_ARRAY = Method("android.os.Parcel", "readArray", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_PARCELABLE_ARRAY = Method("android.os.Parcel", "readParcelableArray", listOf("java.lang.ClassLoader")) // Bundle private val BUNDLE_METHOD_GET_SERIALIZABLE = Method("android.os.Bundle", "getSerializable", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_PARCELABLE = Method(listOf("T"), "android.os.Bundle", "getParcelable", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_PARCELABLE_ARRAY_LIST = Method(listOf("T"), "android.os.Bundle", "getParcelableArrayList", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_PARCELABLE_ARRAY = Method("android.os.Bundle", "getParcelableArray", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_SPARSE_PARCELABLE_ARRAY = Method(listOf("T"), "android.os.Bundle", "getSparseParcelableArray", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_SERIALIZABLE = Method("android.os.Bundle", "getSerializable", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_PARCELABLE = Method(listOf("T"), "android.os.Bundle", "getParcelable", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_PARCELABLE_ARRAY_LIST = Method(listOf("T"), "android.os.Bundle", "getParcelableArrayList", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_PARCELABLE_ARRAY = Method("android.os.Bundle", "getParcelableArray", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_SPARSE_PARCELABLE_ARRAY = Method(listOf("T"), "android.os.Bundle", "getSparseParcelableArray", listOf("java.lang.String")) // Intent private val INTENT_METHOD_GET_SERIALIZABLE_EXTRA = Method("android.content.Intent", "getSerializableExtra", listOf("java.lang.String")) private val INTENT_METHOD_GET_PARCELABLE_EXTRA = Method(listOf("T"), "android.content.Intent", "getParcelableExtra", listOf("java.lang.String")) private val INTENT_METHOD_GET_PARCELABLE_ARRAY_EXTRA = Method("android.content.Intent", "getParcelableArrayExtra", listOf("java.lang.String")) private val INTENT_METHOD_GET_PARCELABLE_ARRAY_LIST_EXTRA = Method(listOf("T"), "android.content.Intent", "getParcelableArrayListExtra", listOf("java.lang.String")) private val INTENT_METHOD_GET_SERIALIZABLE_EXTRA = Method("android.content.Intent", "getSerializableExtra", listOf("java.lang.String")) private val INTENT_METHOD_GET_PARCELABLE_EXTRA = Method(listOf("T"), "android.content.Intent", "getParcelableExtra", listOf("java.lang.String")) private val INTENT_METHOD_GET_PARCELABLE_ARRAY_EXTRA = Method("android.content.Intent", "getParcelableArrayExtra", listOf("java.lang.String")) private val INTENT_METHOD_GET_PARCELABLE_ARRAY_LIST_EXTRA = Method(listOf("T"), "android.content.Intent", "getParcelableArrayListExtra", listOf("java.lang.String")) // TODO: Write migrators for methods below private val PARCEL_METHOD_READ_PARCELABLE_CREATOR = Method("android.os.Parcel", "readParcelableCreator", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_PARCELABLE_CREATOR = Method("android.os.Parcel", "readParcelableCreator", listOf("java.lang.ClassLoader")) private val MIGRATORS = listOf( ReturnMigrator(PARCEL_METHOD_READ_PARCELABLE, setOf("android.os.Parcelable")), Loading tools/lint/framework/checks/src/test/java/com/google/android/lint/parcel/SaferParcelCheckerTest.kt +26 −26 Original line number Diff line number Diff line Loading @@ -60,11 +60,11 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:7: Warning: Unsafe Parcel.readSerializable() \ src/test/pkg/TestClass.java:7: Error: Unsafe Parcel.readSerializable() \ API usage [UnsafeParcelApi] Serializable ans = p.readSerializable(); ~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -111,11 +111,11 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:6: Warning: Unsafe Parcel.readArrayList() API \ src/test/pkg/TestClass.java:6: Error: Unsafe Parcel.readArrayList() API \ usage [UnsafeParcelApi] ArrayList ans = p.readArrayList(null); ~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -165,11 +165,11 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:9: Warning: Unsafe Parcel.readList() API usage \ src/test/pkg/TestClass.java:9: Error: Unsafe Parcel.readList() API usage \ [UnsafeParcelApi] p.readList(list, null); ~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -219,11 +219,11 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:7: Warning: Unsafe Parcel.readParcelable() API \ src/test/pkg/TestClass.java:7: Error: Unsafe Parcel.readParcelable() API \ usage [UnsafeParcelApi] Intent ans = p.readParcelable(null); ~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -273,11 +273,11 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:9: Warning: Unsafe Parcel.readParcelableList() \ src/test/pkg/TestClass.java:9: Error: Unsafe Parcel.readParcelableList() \ API usage [UnsafeParcelApi] List<Intent> ans = p.readParcelableList(list, null); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -329,11 +329,11 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:8: Warning: Unsafe Parcel.readSparseArray() API\ src/test/pkg/TestClass.java:8: Error: Unsafe Parcel.readSparseArray() API\ usage [UnsafeParcelApi] SparseArray<Intent> ans = p.readSparseArray(null); ~~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -383,11 +383,11 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:7: Warning: Unsafe Parcel.readArray() API\ src/test/pkg/TestClass.java:7: Error: Unsafe Parcel.readArray() API\ usage [UnsafeParcelApi] Intent[] ans = p.readArray(null); ~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -435,11 +435,11 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:7: Warning: Unsafe Parcel.readParcelableArray() API\ src/test/pkg/TestClass.java:7: Error: Unsafe Parcel.readParcelableArray() API\ usage [UnsafeParcelApi] Intent[] ans = p.readParcelableArray(null); ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -489,10 +489,10 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:7: Warning: Unsafe Bundle.getParcelable() API usage [UnsafeParcelApi] src/test/pkg/TestClass.java:7: Error: Unsafe Bundle.getParcelable() API usage [UnsafeParcelApi] Intent ans = b.getParcelable("key"); ~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -540,10 +540,10 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:7: Warning: Unsafe Bundle.getParcelableArrayList() API usage [UnsafeParcelApi] src/test/pkg/TestClass.java:7: Error: Unsafe Bundle.getParcelableArrayList() API usage [UnsafeParcelApi] ArrayList<Intent> ans = b.getParcelableArrayList("key"); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -591,10 +591,10 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:7: Warning: Unsafe Bundle.getParcelableArray() API usage [UnsafeParcelApi] src/test/pkg/TestClass.java:7: Error: Unsafe Bundle.getParcelableArray() API usage [UnsafeParcelApi] Intent[] ans = b.getParcelableArray("key"); ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -642,10 +642,10 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:7: Warning: Unsafe Bundle.getSparseParcelableArray() API usage [UnsafeParcelApi] src/test/pkg/TestClass.java:7: Error: Unsafe Bundle.getSparseParcelableArray() API usage [UnsafeParcelApi] SparseArray<Intent> ans = b.getSparseParcelableArray("key"); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -694,10 +694,10 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:6: Warning: Unsafe Intent.getParcelableExtra() API usage [UnsafeParcelApi] src/test/pkg/TestClass.java:6: Error: Unsafe Intent.getParcelableExtra() API usage [UnsafeParcelApi] Intent ans = i.getParcelableExtra("name"); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading
tools/lint/framework/checks/src/main/java/com/google/android/lint/parcel/SaferParcelChecker.kt +47 −21 Original line number Diff line number Diff line Loading @@ -16,13 +16,21 @@ package com.google.android.lint.parcel import com.android.tools.lint.detector.api.* import com.android.tools.lint.detector.api.Category import com.android.tools.lint.detector.api.Context import com.android.tools.lint.detector.api.Detector import com.android.tools.lint.detector.api.Implementation import com.android.tools.lint.detector.api.Issue import com.android.tools.lint.detector.api.JavaContext import com.android.tools.lint.detector.api.Scope import com.android.tools.lint.detector.api.Severity import com.android.tools.lint.detector.api.SourceCodeScanner import com.android.tools.lint.detector.api.UastLintUtils import com.intellij.psi.PsiMethod import com.intellij.psi.PsiSubstitutor import com.intellij.psi.PsiType import com.intellij.psi.PsiTypeParameter import org.jetbrains.uast.UCallExpression import java.util.* @Suppress("UnstableApiUsage") class SaferParcelChecker : Detector(), SourceCodeScanner { Loading Loading @@ -67,7 +75,7 @@ class SaferParcelChecker : Detector(), SourceCodeScanner { """, category = Category.SECURITY, priority = 8, severity = Severity.WARNING, severity = Severity.ERROR, implementation = Implementation( SaferParcelChecker::class.java, Loading @@ -76,30 +84,48 @@ class SaferParcelChecker : Detector(), SourceCodeScanner { ) // Parcel private val PARCEL_METHOD_READ_SERIALIZABLE = Method("android.os.Parcel", "readSerializable", listOf()) private val PARCEL_METHOD_READ_ARRAY_LIST = Method("android.os.Parcel", "readArrayList", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_LIST = Method("android.os.Parcel", "readList", listOf("java.util.List", "java.lang.ClassLoader")) private val PARCEL_METHOD_READ_PARCELABLE = Method(listOf("T"), "android.os.Parcel", "readParcelable", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_PARCELABLE_LIST = Method(listOf("T"), "android.os.Parcel", "readParcelableList", listOf("java.util.List<T>", "java.lang.ClassLoader")) private val PARCEL_METHOD_READ_SPARSE_ARRAY = Method(listOf("T"), "android.os.Parcel", "readSparseArray", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_ARRAY = Method("android.os.Parcel", "readArray", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_PARCELABLE_ARRAY = Method("android.os.Parcel", "readParcelableArray", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_SERIALIZABLE = Method("android.os.Parcel", "readSerializable", listOf()) private val PARCEL_METHOD_READ_ARRAY_LIST = Method("android.os.Parcel", "readArrayList", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_LIST = Method("android.os.Parcel", "readList", listOf("java.util.List", "java.lang.ClassLoader")) private val PARCEL_METHOD_READ_PARCELABLE = Method(listOf("T"), "android.os.Parcel", "readParcelable", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_PARCELABLE_LIST = Method(listOf("T"), "android.os.Parcel", "readParcelableList", listOf("java.util.List<T>", "java.lang.ClassLoader")) private val PARCEL_METHOD_READ_SPARSE_ARRAY = Method(listOf("T"), "android.os.Parcel", "readSparseArray", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_ARRAY = Method("android.os.Parcel", "readArray", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_PARCELABLE_ARRAY = Method("android.os.Parcel", "readParcelableArray", listOf("java.lang.ClassLoader")) // Bundle private val BUNDLE_METHOD_GET_SERIALIZABLE = Method("android.os.Bundle", "getSerializable", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_PARCELABLE = Method(listOf("T"), "android.os.Bundle", "getParcelable", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_PARCELABLE_ARRAY_LIST = Method(listOf("T"), "android.os.Bundle", "getParcelableArrayList", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_PARCELABLE_ARRAY = Method("android.os.Bundle", "getParcelableArray", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_SPARSE_PARCELABLE_ARRAY = Method(listOf("T"), "android.os.Bundle", "getSparseParcelableArray", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_SERIALIZABLE = Method("android.os.Bundle", "getSerializable", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_PARCELABLE = Method(listOf("T"), "android.os.Bundle", "getParcelable", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_PARCELABLE_ARRAY_LIST = Method(listOf("T"), "android.os.Bundle", "getParcelableArrayList", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_PARCELABLE_ARRAY = Method("android.os.Bundle", "getParcelableArray", listOf("java.lang.String")) private val BUNDLE_METHOD_GET_SPARSE_PARCELABLE_ARRAY = Method(listOf("T"), "android.os.Bundle", "getSparseParcelableArray", listOf("java.lang.String")) // Intent private val INTENT_METHOD_GET_SERIALIZABLE_EXTRA = Method("android.content.Intent", "getSerializableExtra", listOf("java.lang.String")) private val INTENT_METHOD_GET_PARCELABLE_EXTRA = Method(listOf("T"), "android.content.Intent", "getParcelableExtra", listOf("java.lang.String")) private val INTENT_METHOD_GET_PARCELABLE_ARRAY_EXTRA = Method("android.content.Intent", "getParcelableArrayExtra", listOf("java.lang.String")) private val INTENT_METHOD_GET_PARCELABLE_ARRAY_LIST_EXTRA = Method(listOf("T"), "android.content.Intent", "getParcelableArrayListExtra", listOf("java.lang.String")) private val INTENT_METHOD_GET_SERIALIZABLE_EXTRA = Method("android.content.Intent", "getSerializableExtra", listOf("java.lang.String")) private val INTENT_METHOD_GET_PARCELABLE_EXTRA = Method(listOf("T"), "android.content.Intent", "getParcelableExtra", listOf("java.lang.String")) private val INTENT_METHOD_GET_PARCELABLE_ARRAY_EXTRA = Method("android.content.Intent", "getParcelableArrayExtra", listOf("java.lang.String")) private val INTENT_METHOD_GET_PARCELABLE_ARRAY_LIST_EXTRA = Method(listOf("T"), "android.content.Intent", "getParcelableArrayListExtra", listOf("java.lang.String")) // TODO: Write migrators for methods below private val PARCEL_METHOD_READ_PARCELABLE_CREATOR = Method("android.os.Parcel", "readParcelableCreator", listOf("java.lang.ClassLoader")) private val PARCEL_METHOD_READ_PARCELABLE_CREATOR = Method("android.os.Parcel", "readParcelableCreator", listOf("java.lang.ClassLoader")) private val MIGRATORS = listOf( ReturnMigrator(PARCEL_METHOD_READ_PARCELABLE, setOf("android.os.Parcelable")), Loading
tools/lint/framework/checks/src/test/java/com/google/android/lint/parcel/SaferParcelCheckerTest.kt +26 −26 Original line number Diff line number Diff line Loading @@ -60,11 +60,11 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:7: Warning: Unsafe Parcel.readSerializable() \ src/test/pkg/TestClass.java:7: Error: Unsafe Parcel.readSerializable() \ API usage [UnsafeParcelApi] Serializable ans = p.readSerializable(); ~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -111,11 +111,11 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:6: Warning: Unsafe Parcel.readArrayList() API \ src/test/pkg/TestClass.java:6: Error: Unsafe Parcel.readArrayList() API \ usage [UnsafeParcelApi] ArrayList ans = p.readArrayList(null); ~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -165,11 +165,11 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:9: Warning: Unsafe Parcel.readList() API usage \ src/test/pkg/TestClass.java:9: Error: Unsafe Parcel.readList() API usage \ [UnsafeParcelApi] p.readList(list, null); ~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -219,11 +219,11 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:7: Warning: Unsafe Parcel.readParcelable() API \ src/test/pkg/TestClass.java:7: Error: Unsafe Parcel.readParcelable() API \ usage [UnsafeParcelApi] Intent ans = p.readParcelable(null); ~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -273,11 +273,11 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:9: Warning: Unsafe Parcel.readParcelableList() \ src/test/pkg/TestClass.java:9: Error: Unsafe Parcel.readParcelableList() \ API usage [UnsafeParcelApi] List<Intent> ans = p.readParcelableList(list, null); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -329,11 +329,11 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:8: Warning: Unsafe Parcel.readSparseArray() API\ src/test/pkg/TestClass.java:8: Error: Unsafe Parcel.readSparseArray() API\ usage [UnsafeParcelApi] SparseArray<Intent> ans = p.readSparseArray(null); ~~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -383,11 +383,11 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:7: Warning: Unsafe Parcel.readArray() API\ src/test/pkg/TestClass.java:7: Error: Unsafe Parcel.readArray() API\ usage [UnsafeParcelApi] Intent[] ans = p.readArray(null); ~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -435,11 +435,11 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:7: Warning: Unsafe Parcel.readParcelableArray() API\ src/test/pkg/TestClass.java:7: Error: Unsafe Parcel.readParcelableArray() API\ usage [UnsafeParcelApi] Intent[] ans = p.readParcelableArray(null); ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -489,10 +489,10 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:7: Warning: Unsafe Bundle.getParcelable() API usage [UnsafeParcelApi] src/test/pkg/TestClass.java:7: Error: Unsafe Bundle.getParcelable() API usage [UnsafeParcelApi] Intent ans = b.getParcelable("key"); ~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -540,10 +540,10 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:7: Warning: Unsafe Bundle.getParcelableArrayList() API usage [UnsafeParcelApi] src/test/pkg/TestClass.java:7: Error: Unsafe Bundle.getParcelableArrayList() API usage [UnsafeParcelApi] ArrayList<Intent> ans = b.getParcelableArrayList("key"); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -591,10 +591,10 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:7: Warning: Unsafe Bundle.getParcelableArray() API usage [UnsafeParcelApi] src/test/pkg/TestClass.java:7: Error: Unsafe Bundle.getParcelableArray() API usage [UnsafeParcelApi] Intent[] ans = b.getParcelableArray("key"); ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -642,10 +642,10 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:7: Warning: Unsafe Bundle.getSparseParcelableArray() API usage [UnsafeParcelApi] src/test/pkg/TestClass.java:7: Error: Unsafe Bundle.getSparseParcelableArray() API usage [UnsafeParcelApi] SparseArray<Intent> ans = b.getSparseParcelableArray("key"); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading Loading @@ -694,10 +694,10 @@ class SaferParcelCheckerTest : LintDetectorTest() { .run() .expect( """ src/test/pkg/TestClass.java:6: Warning: Unsafe Intent.getParcelableExtra() API usage [UnsafeParcelApi] src/test/pkg/TestClass.java:6: Error: Unsafe Intent.getParcelableExtra() API usage [UnsafeParcelApi] Intent ans = i.getParcelableExtra("name"); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0 errors, 1 warnings 1 errors, 0 warnings """.addLineContinuation() ) } Loading