diff options
author | Tor Norbye <tnorbye@google.com> | 2012-12-27 12:20:46 -0800 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2013-01-02 13:18:43 -0800 |
commit | 6f609b78e08c4238a8b0ac38a793040c2acdac69 (patch) | |
tree | 55723eeec287bb49dd25fd33ee71d9819704a257 /lint | |
parent | 2ebb3e1e8a44851f1dd452e7c0b757fcd55d4d47 (diff) | |
download | sdk-6f609b78e08c4238a8b0ac38a793040c2acdac69.zip sdk-6f609b78e08c4238a8b0ac38a793040c2acdac69.tar.gz sdk-6f609b78e08c4238a8b0ac38a793040c2acdac69.tar.bz2 |
Update fragment issue from warning to error
Also update constants to stay in sync with sdk/ version.
Change-Id: I8e454a03d83c81036bf8cc73609babc96a9c7739
Diffstat (limited to 'lint')
4 files changed, 32 insertions, 12 deletions
diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/FragmentDetectorTest.java b/lint/cli/src/test/java/com/android/tools/lint/checks/FragmentDetectorTest.java index f732f71..0654ddc 100644 --- a/lint/cli/src/test/java/com/android/tools/lint/checks/FragmentDetectorTest.java +++ b/lint/cli/src/test/java/com/android/tools/lint/checks/FragmentDetectorTest.java @@ -27,26 +27,25 @@ public class FragmentDetectorTest extends AbstractCheckTest { public void test() throws Exception { assertEquals( - "src/test/pkg/FragmentTest.java:10: Warning: This fragment class should be public (test.pkg.FragmentTest.Fragment1) [ValidFragment]\n" + + "src/test/pkg/FragmentTest.java:10: Error: This fragment class should be public (test.pkg.FragmentTest.Fragment1) [ValidFragment]\n" + " private static class Fragment1 extends Fragment {\n" + " ^\n" + - "src/test/pkg/FragmentTest.java:15: Warning: This fragment inner class should be static (test.pkg.FragmentTest.Fragment2) [ValidFragment]\n" + + "src/test/pkg/FragmentTest.java:15: Error: This fragment inner class should be static (test.pkg.FragmentTest.Fragment2) [ValidFragment]\n" + " public class Fragment2 extends Fragment {\n" + " ^\n" + - "src/test/pkg/FragmentTest.java:21: Warning: The default constructor must be public [ValidFragment]\n" + + "src/test/pkg/FragmentTest.java:21: Error: The default constructor must be public [ValidFragment]\n" + " private Fragment3() {\n" + " ~~~~~~~~~\n" + - "src/test/pkg/FragmentTest.java:26: Warning: This fragment should provide a default constructor (a public constructor with no arguments) (test.pkg.FragmentTest.Fragment4) [ValidFragment]\n" + + "src/test/pkg/FragmentTest.java:26: Error: This fragment should provide a default constructor (a public constructor with no arguments) (test.pkg.FragmentTest.Fragment4) [ValidFragment]\n" + " public static class Fragment4 extends Fragment {\n" + " ~~~~~~~~~\n" + - "src/test/pkg/FragmentTest.java:27: Warning: Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead [ValidFragment]\n" + + "src/test/pkg/FragmentTest.java:27: Error: Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead [ValidFragment]\n" + " private Fragment4(int dummy) {\n" + " ~~~~~~~~~\n" + - "src/test/pkg/FragmentTest.java:36: Warning: Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead [ValidFragment]\n" + + "src/test/pkg/FragmentTest.java:36: Error: Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead [ValidFragment]\n" + " public Fragment5(int dummy) {\n" + " ~~~~~~~~~\n" + - "0 errors, 6 warnings\n" + - "", + "6 errors, 0 warnings\n", lintProject( "bytecode/FragmentTest$Fragment1.class.data=>bin/classes/test/pkg/FragmentTest$Fragment1.class", diff --git a/lint/cli/src/test/java/com/android/tools/lint/checks/MissingClassDetectorTest.java b/lint/cli/src/test/java/com/android/tools/lint/checks/MissingClassDetectorTest.java index 27875e8..b3ff056 100644 --- a/lint/cli/src/test/java/com/android/tools/lint/checks/MissingClassDetectorTest.java +++ b/lint/cli/src/test/java/com/android/tools/lint/checks/MissingClassDetectorTest.java @@ -373,4 +373,21 @@ public class MissingClassDetectorTest extends AbstractCheckTest { "bytecode/OnClickActivity.class.data=>bin/classes/test/pkg/OnClickActivity.class" )); } + + public void testFragments() throws Exception { + // Ensure that we don't do instantiation checks here since they are handled by + // the FragmentDetector + assertEquals( + "No warnings.", + + lintProject( + "bytecode/FragmentTest$Fragment1.class.data=>bin/classes/test/pkg/FragmentTest$Fragment1.class", + "bytecode/FragmentTest$Fragment2.class.data=>bin/classes/test/pkg/FragmentTest$Fragment2.class", + "bytecode/FragmentTest$Fragment3.class.data=>bin/classes/test/pkg/FragmentTest$Fragment3.class", + "bytecode/FragmentTest$Fragment4.class.data=>bin/classes/test/pkg/FragmentTest$Fragment4.class", + "bytecode/FragmentTest$Fragment5.class.data=>bin/classes/test/pkg/FragmentTest$Fragment5.class", + "bytecode/FragmentTest$Fragment6.class.data=>bin/classes/test/pkg/FragmentTest$Fragment6.class", + "bytecode/FragmentTest$NotAFragment.class.data=>bin/classes/test/pkg/FragmentTest$NotAFragment.class", + "bytecode/FragmentTest.java.txt=>src/test/pkg/FragmentTest.java")); + } } diff --git a/lint/libs/lint_api/src/main/java/com/android/tools/lint/client/api/LintDriver.java b/lint/libs/lint_api/src/main/java/com/android/tools/lint/client/api/LintDriver.java index 0ff3a9a..dd268a5 100644 --- a/lint/libs/lint_api/src/main/java/com/android/tools/lint/client/api/LintDriver.java +++ b/lint/libs/lint_api/src/main/java/com/android/tools/lint/client/api/LintDriver.java @@ -287,10 +287,13 @@ public class LintDriver { try { projects = computeProjects(files); } catch (CircularDependencyException e) { - Context context = new Context(this, e.getProject(), null, e.getLocation().getFile()); mCurrentProject = e.getProject(); - context.report(IssueRegistry.LINT_ERROR, e.getLocation(), e.getMessage(), null); - mCurrentProject = null; + if (mCurrentProject != null) { + File file = e.getLocation().getFile(); + Context context = new Context(this, mCurrentProject, null, file); + context.report(IssueRegistry.LINT_ERROR, e.getLocation(), e.getMessage(), null); + mCurrentProject = null; + } return; } if (projects.isEmpty()) { diff --git a/lint/libs/lint_checks/src/main/java/com/android/tools/lint/checks/FragmentDetector.java b/lint/libs/lint_checks/src/main/java/com/android/tools/lint/checks/FragmentDetector.java index 932d307..f6ebcd6 100644 --- a/lint/libs/lint_checks/src/main/java/com/android/tools/lint/checks/FragmentDetector.java +++ b/lint/libs/lint_checks/src/main/java/com/android/tools/lint/checks/FragmentDetector.java @@ -65,7 +65,7 @@ public class FragmentDetector extends Detector implements ClassScanner { Category.CORRECTNESS, 6, - Severity.WARNING, + Severity.ERROR, FragmentDetector.class, Scope.CLASS_FILE_SCOPE).setMoreInfo( "http://developer.android.com/reference/android/app/Fragment.html#Fragment()"); //$NON-NLS-1$ @@ -145,6 +145,7 @@ public class FragmentDetector extends Detector implements ClassScanner { } } else if (!method.desc.contains("()")) { //$NON-NLS-1$ context.report(ISSUE, context.getLocation(method, classNode), + // TODO: Use separate issue for this which isn't an error "Avoid non-default constructors in fragments: use a default constructor " + "plus Fragment#setArguments(Bundle) instead", null); |