diff --git a/plugins/java-i18n/java-i18n.iml b/plugins/java-i18n/java-i18n.iml index 08852084e604..b2f011fe2f7c 100644 --- a/plugins/java-i18n/java-i18n.iml +++ b/plugins/java-i18n/java-i18n.iml @@ -21,6 +21,7 @@ + diff --git a/plugins/java-i18n/testData/inspections/i18n/annotationArgument/expected.xml b/plugins/java-i18n/testData/inspections/i18n/annotationArgument/expected.xml new file mode 100644 index 000000000000..d704d58ed391 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/annotationArgument/expected.xml @@ -0,0 +1,4 @@ + + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/annotationArgument/src/Foo.java b/plugins/java-i18n/testData/inspections/i18n/annotationArgument/src/Foo.java new file mode 100644 index 000000000000..7bbdc7d09cd3 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/annotationArgument/src/Foo.java @@ -0,0 +1,11 @@ +@interface Language { + @org.jetbrains.annotations.NonNls + java.lang.String value(); +} + +class Foo { + void foo() { + @Language("abcdefgh") + String s; + } +} \ No newline at end of file diff --git a/plugins/java-i18n/testData/inspections/i18n/anonymousClassConstructorParameter/expected.xml b/plugins/java-i18n/testData/inspections/i18n/anonymousClassConstructorParameter/expected.xml new file mode 100644 index 000000000000..fe72ddee8876 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/anonymousClassConstructorParameter/expected.xml @@ -0,0 +1,9 @@ + + + + Test.java + 8 + Hard coded string literal + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/anonymousClassConstructorParameter/src/Test.java b/plugins/java-i18n/testData/inspections/i18n/anonymousClassConstructorParameter/src/Test.java new file mode 100644 index 000000000000..dbd2e469ac2c --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/anonymousClassConstructorParameter/src/Test.java @@ -0,0 +1,14 @@ +class Test { + private class InnerTest { + public InnerTest(String s) { } + public abstract void run(); + } + + public void foo(String s) { + bar(new InnerTest("Literal") { public void run() { } }); + } + + public void bar(InnerTest t) { + + } +} diff --git a/plugins/java-i18n/testData/inspections/i18n/constructorCallOfNonNlsVariable/expected.xml b/plugins/java-i18n/testData/inspections/i18n/constructorCallOfNonNlsVariable/expected.xml new file mode 100644 index 000000000000..d704d58ed391 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/constructorCallOfNonNlsVariable/expected.xml @@ -0,0 +1,4 @@ + + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/constructorCallOfNonNlsVariable/src/Test.java b/plugins/java-i18n/testData/inspections/i18n/constructorCallOfNonNlsVariable/src/Test.java new file mode 100644 index 000000000000..ba265eccd255 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/constructorCallOfNonNlsVariable/src/Test.java @@ -0,0 +1,6 @@ +class Test { + void foo() { + @org.jetbrains.annotations.NonNls StringBuffer buffer = new StringBuffer("text"); + buffer = new StringBuffer("text"); + } +} \ No newline at end of file diff --git a/plugins/java-i18n/testData/inspections/i18n/enum/expected.xml b/plugins/java-i18n/testData/inspections/i18n/enum/expected.xml new file mode 100644 index 000000000000..4bc4c6551605 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/enum/expected.xml @@ -0,0 +1,14 @@ + + + + Test.java + 2 + Hard coded string literal + + + Test.java + 3 + Hard coded string literal + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/enum/src/Test.java b/plugins/java-i18n/testData/inspections/i18n/enum/src/Test.java new file mode 100644 index 000000000000..0f167a69984e --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/enum/src/Test.java @@ -0,0 +1,21 @@ +enum Test { + CHECKIN("Text1"), + ADD("Rext2"); + + Test(final String id) { + myId = id; + } + + private final String myId; +} + +enum Test2 { + CHECKIN("Text1"), + ADD("Rext2"); + + Test2(@org.jetbrains.annotations.NonNls final String id) { + myId = id; + } + + private final String myId; +} \ No newline at end of file diff --git a/plugins/java-i18n/testData/inspections/i18n/fields/expected.xml b/plugins/java-i18n/testData/inspections/i18n/fields/expected.xml new file mode 100644 index 000000000000..d704d58ed391 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/fields/expected.xml @@ -0,0 +1,4 @@ + + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/fields/src/Test.java b/plugins/java-i18n/testData/inspections/i18n/fields/src/Test.java new file mode 100644 index 000000000000..eb902100eda3 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/fields/src/Test.java @@ -0,0 +1,7 @@ +class Foo { + @org.jetbrains.annotations.NonNls String field; + @org.jetbrains.annotations.NonNls String field2 = "text1"; + void foo() { + field = "text2"; + } +} \ No newline at end of file diff --git a/plugins/java-i18n/testData/inspections/i18n/formTabbedPaneTitle/expected.xml b/plugins/java-i18n/testData/inspections/i18n/formTabbedPaneTitle/expected.xml new file mode 100644 index 000000000000..9501f4944ff6 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/formTabbedPaneTitle/expected.xml @@ -0,0 +1,9 @@ + + + + Test.form + 1 + Hard coded string literal + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/formTabbedPaneTitle/src/Test.form b/plugins/java-i18n/testData/inspections/i18n/formTabbedPaneTitle/src/Test.form new file mode 100644 index 000000000000..c560e0f8cd0d --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/formTabbedPaneTitle/src/Test.form @@ -0,0 +1,23 @@ + +
+ + + + + + + + + + + + + + + + + + + + +
diff --git a/plugins/java-i18n/testData/inspections/i18n/hardCodedStringLiteralAsParameter/expected.xml b/plugins/java-i18n/testData/inspections/i18n/hardCodedStringLiteralAsParameter/expected.xml new file mode 100644 index 000000000000..c93de21f0c36 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/hardCodedStringLiteralAsParameter/expected.xml @@ -0,0 +1,9 @@ + + + + Foo.java + 3 + Hard coded string literal + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/hardCodedStringLiteralAsParameter/src/Foo.java b/plugins/java-i18n/testData/inspections/i18n/hardCodedStringLiteralAsParameter/src/Foo.java new file mode 100644 index 000000000000..833bfdada65d --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/hardCodedStringLiteralAsParameter/src/Foo.java @@ -0,0 +1,5 @@ +class Foo { + void foo(String s) { + foo("text"); + } +} \ No newline at end of file diff --git a/plugins/java-i18n/testData/inspections/i18n/initializerInAnonymousClass/expected.xml b/plugins/java-i18n/testData/inspections/i18n/initializerInAnonymousClass/expected.xml new file mode 100644 index 000000000000..b66d698faee3 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/initializerInAnonymousClass/expected.xml @@ -0,0 +1,8 @@ + + + + Test.java + 7 + Hard coded string literal + + \ No newline at end of file diff --git a/plugins/java-i18n/testData/inspections/i18n/initializerInAnonymousClass/src/Test.java b/plugins/java-i18n/testData/inspections/i18n/initializerInAnonymousClass/src/Test.java new file mode 100644 index 000000000000..01f27af477f9 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/initializerInAnonymousClass/src/Test.java @@ -0,0 +1,14 @@ +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; +public class Test { + public static void main(String[] args){ + ActionListener listener = new ActionListener(){ + { + final String test = "problem reported twice"; + } + public void actionPerformed(final ActionEvent e) { + + } + }; + } +} \ No newline at end of file diff --git a/plugins/java-i18n/testData/inspections/i18n/localVariables/expected.xml b/plugins/java-i18n/testData/inspections/i18n/localVariables/expected.xml new file mode 100644 index 000000000000..8e7958ce9451 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/localVariables/expected.xml @@ -0,0 +1,14 @@ + + + + Test.java + 3 + Hard coded string literal + + + Test.java + 8 + Hard coded string literal + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/localVariables/src/Test.java b/plugins/java-i18n/testData/inspections/i18n/localVariables/src/Test.java new file mode 100644 index 000000000000..51c6726e264d --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/localVariables/src/Test.java @@ -0,0 +1,11 @@ +class Foo { + void foo() { + String v1 = "text"; + @org.jetbrains.annotations.NonNls String v2 = "text"; + String v3; + @org.jetbrains.annotations.NonNls String v4; + + v3 = "text"; + v4 = "text"; + } +} \ No newline at end of file diff --git a/plugins/java-i18n/testData/inspections/i18n/nonNlsArray/expected.xml b/plugins/java-i18n/testData/inspections/i18n/nonNlsArray/expected.xml new file mode 100644 index 000000000000..d704d58ed391 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/nonNlsArray/expected.xml @@ -0,0 +1,4 @@ + + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/nonNlsArray/src/Test.java b/plugins/java-i18n/testData/inspections/i18n/nonNlsArray/src/Test.java new file mode 100644 index 000000000000..073910f6e79e --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/nonNlsArray/src/Test.java @@ -0,0 +1,9 @@ +class Foo { + @org.jetbrains.annotations.NonNls String[] myArray = new String[] {"text1", "text2"}; + @org.jetbrains.annotations.NonNls Stirng[] foo() { + myArray = new String[] {"text3", "text4"}; + myArray[0] = "text5"; + + return new String[] {"text6"}; + } +} \ No newline at end of file diff --git a/plugins/java-i18n/testData/inspections/i18n/nonNlsComment/expected.xml b/plugins/java-i18n/testData/inspections/i18n/nonNlsComment/expected.xml new file mode 100644 index 000000000000..e296a5c15fdf --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/nonNlsComment/expected.xml @@ -0,0 +1,16 @@ + + + + Foo.java + 4 + Hard coded strings + Hard coded string literal: 'xxxxx' + + + Foo.java + 9 + Hard coded strings + Hard coded string literal: 'MYNON-NLS' + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/nonNlsComment/src/Foo.java b/plugins/java-i18n/testData/inspections/i18n/nonNlsComment/src/Foo.java new file mode 100644 index 000000000000..d028b09721aa --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/nonNlsComment/src/Foo.java @@ -0,0 +1,12 @@ +class Foo { + void foo(String... s) { + foo("literal", "literal"); // MYNON-NLS0 + String d = "xxxxx"; // NON-NLS + String d0 = "xxxxx", d01="sssss"; //MYNON-NLS + String d1 = "xxxxx"; // MYNON-NLS? + + String d2 = "xxxxx"; /* MYNON-NLS ??? */ + String wtf="MYNON-NLS"; + String dw2 = "xxxxx"; String wtw="MYNON-NLS"; /* MYNON-NLS ??? */ + } +} \ No newline at end of file diff --git a/plugins/java-i18n/testData/inspections/i18n/parameterInNewAnonymousClass/expected.xml b/plugins/java-i18n/testData/inspections/i18n/parameterInNewAnonymousClass/expected.xml new file mode 100644 index 000000000000..d704d58ed391 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/parameterInNewAnonymousClass/expected.xml @@ -0,0 +1,4 @@ + + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/parameterInNewAnonymousClass/src/Test.java b/plugins/java-i18n/testData/inspections/i18n/parameterInNewAnonymousClass/src/Test.java new file mode 100644 index 000000000000..46a6b8db81f3 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/parameterInNewAnonymousClass/src/Test.java @@ -0,0 +1,11 @@ +class Test { + public static final Test TEST = new Test("text") { + public void foo() {} + }; + + public Test(@org.jetbrains.annotations.NonNls String p) { + + } + + public abstract void foo(); +} \ No newline at end of file diff --git a/plugins/java-i18n/testData/inspections/i18n/parameterInheritsNonNlsAnnotationFromSuper/expected.xml b/plugins/java-i18n/testData/inspections/i18n/parameterInheritsNonNlsAnnotationFromSuper/expected.xml new file mode 100644 index 000000000000..d704d58ed391 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/parameterInheritsNonNlsAnnotationFromSuper/expected.xml @@ -0,0 +1,4 @@ + + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/parameterInheritsNonNlsAnnotationFromSuper/src/Test.java b/plugins/java-i18n/testData/inspections/i18n/parameterInheritsNonNlsAnnotationFromSuper/src/Test.java new file mode 100644 index 000000000000..06a7501ac22e --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/parameterInheritsNonNlsAnnotationFromSuper/src/Test.java @@ -0,0 +1,17 @@ +class A { + void foo(@org.jetbrains.annotations.NonNls String p){ + + } +} + +class B extends A{ + void foo(String p){ + + } +} + +class C extends B{ + void foo(String p){ + foo("text"); + } +} \ No newline at end of file diff --git a/plugins/java-i18n/testData/inspections/i18n/recursiveInheritance/expected.xml b/plugins/java-i18n/testData/inspections/i18n/recursiveInheritance/expected.xml new file mode 100644 index 000000000000..a8e3c1edbb25 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/recursiveInheritance/expected.xml @@ -0,0 +1,24 @@ + + + + Test.java + 2 + Hard coded string literal + + + Test.java + 6 + Hard coded string literal + + + Test.java + 11 + Hard coded string literal + + + Test.java + 12 + Hard coded string literal + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/recursiveInheritance/src/Test.java b/plugins/java-i18n/testData/inspections/i18n/recursiveInheritance/src/Test.java new file mode 100644 index 000000000000..fa637486fae2 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/recursiveInheritance/src/Test.java @@ -0,0 +1,14 @@ +class A extends C{ + String foo(String p){ return "text";} +} + +class B extends A{ + String foo(String p){ return "text";} +} + +class C extends A{ + String foo(String p){ + foo("text"); + return "text"; + } +} \ No newline at end of file diff --git a/plugins/java-i18n/testData/inspections/i18n/returnTypeInheritsNonNlsAnnotationFromParent/expected.xml b/plugins/java-i18n/testData/inspections/i18n/returnTypeInheritsNonNlsAnnotationFromParent/expected.xml new file mode 100644 index 000000000000..d704d58ed391 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/returnTypeInheritsNonNlsAnnotationFromParent/expected.xml @@ -0,0 +1,4 @@ + + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/returnTypeInheritsNonNlsAnnotationFromParent/src/Test.java b/plugins/java-i18n/testData/inspections/i18n/returnTypeInheritsNonNlsAnnotationFromParent/src/Test.java new file mode 100644 index 000000000000..4e1d8de48f39 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/returnTypeInheritsNonNlsAnnotationFromParent/src/Test.java @@ -0,0 +1,17 @@ +interface I { + @org.jetbrains.annotations.NonNls String foo(); +} + +class B implements I{ + public String foo() { + return "text"; + } +} + +class A { + B inner = new B() { + public String foo() { + return "text"; + } + }; +} \ No newline at end of file diff --git a/plugins/java-i18n/testData/inspections/i18n/stringBufferNonNls/expected.xml b/plugins/java-i18n/testData/inspections/i18n/stringBufferNonNls/expected.xml new file mode 100644 index 000000000000..d704d58ed391 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/stringBufferNonNls/expected.xml @@ -0,0 +1,4 @@ + + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/stringBufferNonNls/src/Bar.java b/plugins/java-i18n/testData/inspections/i18n/stringBufferNonNls/src/Bar.java new file mode 100644 index 000000000000..c29888bb8aad --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/stringBufferNonNls/src/Bar.java @@ -0,0 +1,12 @@ +import java.util.Collection; + +class SBTest { + void foo(@org.jetbrains.annotations.NonNls Collection coll) { + coll.add("aaa"); + } + + void foo(@org.jetbrains.annotations.NonNls StringBuffer buffer) { + buffer.append("aaa"); + buffer.append("aaa").append("bbb").append("do not i18n this too"); + } +} diff --git a/plugins/java-i18n/testData/inspections/i18n/switchOnNonNlsString/expected.xml b/plugins/java-i18n/testData/inspections/i18n/switchOnNonNlsString/expected.xml new file mode 100644 index 000000000000..d704d58ed391 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/switchOnNonNlsString/expected.xml @@ -0,0 +1,4 @@ + + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/switchOnNonNlsString/src/Test.java b/plugins/java-i18n/testData/inspections/i18n/switchOnNonNlsString/src/Test.java new file mode 100644 index 000000000000..72b5aea70436 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/switchOnNonNlsString/src/Test.java @@ -0,0 +1,8 @@ +class Test { + void foo(@org.jetbrains.annotations.NonNls String s) { + switch (s) { + case "foooooo": + break; + } + } +} \ No newline at end of file diff --git a/plugins/java-i18n/testData/inspections/i18n/varargNonNlsParameter/expected.xml b/plugins/java-i18n/testData/inspections/i18n/varargNonNlsParameter/expected.xml new file mode 100644 index 000000000000..d704d58ed391 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/varargNonNlsParameter/expected.xml @@ -0,0 +1,4 @@ + + + + diff --git a/plugins/java-i18n/testData/inspections/i18n/varargNonNlsParameter/src/Foo.java b/plugins/java-i18n/testData/inspections/i18n/varargNonNlsParameter/src/Foo.java new file mode 100644 index 000000000000..eb89d7544a85 --- /dev/null +++ b/plugins/java-i18n/testData/inspections/i18n/varargNonNlsParameter/src/Foo.java @@ -0,0 +1,5 @@ +class Foo { + void foo(@org.jetbrains.annotations.NonNls String... s) { + foo("literal", "literal"); + } +} \ No newline at end of file diff --git a/plugins/java-i18n/testSrc/com/intellij/codeInspection/i18n/I18NInspectionTest.java b/plugins/java-i18n/testSrc/com/intellij/codeInspection/i18n/I18NInspectionTest.java new file mode 100644 index 000000000000..dd0a1ac39fa1 --- /dev/null +++ b/plugins/java-i18n/testSrc/com/intellij/codeInspection/i18n/I18NInspectionTest.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2005 JetBrains s.r.o. All Rights Reserved. + */ +package com.intellij.codeInspection.i18n; + +import com.intellij.openapi.application.PluginPathManager; +import com.intellij.openapi.roots.LanguageLevelProjectExtension; +import com.intellij.pom.java.LanguageLevel; +import com.intellij.psi.JavaPsiFacade; +import com.intellij.testFramework.InspectionTestCase; + +/** + * @author lesya + */ +public class I18NInspectionTest extends InspectionTestCase { + private void doTest() throws Exception { + doTest(new I18nInspection()); + } + private void doTest(I18nInspection tool) throws Exception { + doTest("i18n/" + getTestName(true), tool); + } + + public void testHardCodedStringLiteralAsParameter() throws Exception{ doTest(); } + public void testReturnTypeInheritsNonNlsAnnotationFromParent() throws Exception{ doTest(); } + public void testRecursiveInheritance() throws Exception { doTest(); } + public void testParameterInheritsNonNlsAnnotationFromSuper() throws Exception { doTest(); } + public void testLocalVariables() throws Exception { doTest(); } + public void testFields() throws Exception{ doTest(); } + public void testAnonymousClassConstructorParameter() throws Exception { doTest(); } + public void testStringBufferNonNls() throws Exception { doTest(); } + public void testEnum() throws Exception { + final JavaPsiFacade facade = getJavaFacade(); + final LanguageLevel effectiveLanguageLevel = LanguageLevelProjectExtension.getInstance(facade.getProject()).getLanguageLevel(); + LanguageLevelProjectExtension.getInstance(facade.getProject()).setLanguageLevel(LanguageLevel.JDK_1_5); + try { + doTest(); + } + finally { + LanguageLevelProjectExtension.getInstance(facade.getProject()).setLanguageLevel(effectiveLanguageLevel); + } + } + + public void testFormTabbedPaneTitle() throws Exception { doTest(); } + public void testVarargNonNlsParameter() throws Exception { doTest(); } + public void testInitializerInAnonymousClass() throws Exception{ doTest(); } + public void testNonNlsArray() throws Exception{ doTest(); } + public void testParameterInNewAnonymousClass() throws Exception{ doTest(); } + public void testConstructorCallOfNonNlsVariable() throws Exception{ doTest(); } + public void testSwitchOnNonNlsString() throws Exception{ doTest(); } + public void testNonNlsComment() throws Exception{ + I18nInspection inspection = new I18nInspection(); + inspection.nonNlsCommentPattern = "MYNON-NLS"; + inspection.cacheNonNlsCommentPattern(); + doTest(inspection); + } + public void testAnnotationArgument() throws Exception{ doTest(); } + + @Override + protected String getTestDataPath() { + return PluginPathManager.getPluginHomePath("java-i18n") + "/testData/inspections"; + } +}