From 335d28b4947d4f7722ccbd45ecc1e84bc5a18571 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mehmet=20Can=20C=C3=B6mert?= Date: Thu, 23 Apr 2015 21:30:13 +0300 Subject: [PATCH] issue969: Fix upper/lower case conversation, enhance tests --- config/findbugs-exclude.xml | 14 ----------- .../tools/checkstyle/api/Scope.java | 7 ++++-- .../tools/checkstyle/api/SeverityLevel.java | 7 ++++-- .../checks/AbstractOptionCheck.java | 4 +++- .../checks/NewlineAtEndOfFileCheck.java | 5 +++- .../checks/SuppressWarningsHolder.java | 4 ++-- .../annotation/AnnotationUseStyleCheck.java | 4 +++- .../checks/coding/HiddenFieldCheck.java | 4 +++- .../checks/javadoc/JavadocStyleCheck.java | 6 +++-- .../tools/checkstyle/api/ScopeTest.java | 23 +++++++++++++++++++ .../checkstyle/api/SeverityLevelTest.java | 23 +++++++++++++++++++ 11 files changed, 75 insertions(+), 26 deletions(-) diff --git a/config/findbugs-exclude.xml b/config/findbugs-exclude.xml index 13b814bf4..332bc87f1 100644 --- a/config/findbugs-exclude.xml +++ b/config/findbugs-exclude.xml @@ -98,20 +98,6 @@ - - - - - - - - - - - - - - diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/api/Scope.java b/src/main/java/com/puppycrawl/tools/checkstyle/api/Scope.java index fd1eee080..28dca27c5 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/api/Scope.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/api/Scope.java @@ -18,11 +18,14 @@ //////////////////////////////////////////////////////////////////////////////// package com.puppycrawl.tools.checkstyle.api; +import java.util.Locale; + /** * Represents a Java visibility scope. * * @author Lars Kühne * @author Travis Schneeberger + * @author Mehmet Can Cömert */ public enum Scope { @@ -50,7 +53,7 @@ public enum Scope */ public String getName() { - return name().toLowerCase(); + return name().toLowerCase(Locale.ENGLISH); } /** @@ -73,6 +76,6 @@ public enum Scope */ public static Scope getInstance(String scopeName) { - return valueOf(Scope.class, scopeName.trim().toUpperCase()); + return valueOf(Scope.class, scopeName.trim().toUpperCase(Locale.ENGLISH)); } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/api/SeverityLevel.java b/src/main/java/com/puppycrawl/tools/checkstyle/api/SeverityLevel.java index f0f8ec8c6..3b98e958c 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/api/SeverityLevel.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/api/SeverityLevel.java @@ -18,6 +18,8 @@ //////////////////////////////////////////////////////////////////////////////// package com.puppycrawl.tools.checkstyle.api; +import java.util.Locale; + /** *

* Severity level for a check violation. @@ -29,6 +31,7 @@ package com.puppycrawl.tools.checkstyle.api; * * @author David Schneider * @author Travis Schneeberger + * @author Mehmet Can Cömert */ public enum SeverityLevel { @@ -52,7 +55,7 @@ public enum SeverityLevel */ public String getName() { - return name().toLowerCase(); + return name().toLowerCase(Locale.ENGLISH); } /** @@ -65,6 +68,6 @@ public enum SeverityLevel public static SeverityLevel getInstance(String securityLevelName) { return valueOf(SeverityLevel.class, securityLevelName.trim() - .toUpperCase()); + .toUpperCase(Locale.ENGLISH)); } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/AbstractOptionCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/AbstractOptionCheck.java index e48c94b32..d3704a4c5 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/AbstractOptionCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/AbstractOptionCheck.java @@ -18,6 +18,8 @@ //////////////////////////////////////////////////////////////////////////////// package com.puppycrawl.tools.checkstyle.checks; +import java.util.Locale; + import org.apache.commons.beanutils.ConversionException; import com.puppycrawl.tools.checkstyle.api.Check; @@ -60,7 +62,7 @@ public abstract class AbstractOptionCheck> public void setOption(String optionStr) throws ConversionException { try { - option = Enum.valueOf(optionClass, optionStr.trim().toUpperCase()); + option = Enum.valueOf(optionClass, optionStr.trim().toUpperCase(Locale.ENGLISH)); } catch (IllegalArgumentException iae) { throw new ConversionException("unable to parse " + option, iae); diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/NewlineAtEndOfFileCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/NewlineAtEndOfFileCheck.java index 701ed8801..72419427f 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/NewlineAtEndOfFileCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/NewlineAtEndOfFileCheck.java @@ -20,10 +20,13 @@ package com.puppycrawl.tools.checkstyle.checks; import com.google.common.io.Closeables; import com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck; + import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.util.List; +import java.util.Locale; + import org.apache.commons.beanutils.ConversionException; /** @@ -108,7 +111,7 @@ public class NewlineAtEndOfFileCheck try { lineSeparator = Enum.valueOf(LineSeparatorOption.class, lineSeparatorParam.trim() - .toUpperCase()); + .toUpperCase(Locale.ENGLISH)); } catch (IllegalArgumentException iae) { throw new ConversionException("unable to parse " + lineSeparatorParam, diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/SuppressWarningsHolder.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/SuppressWarningsHolder.java index 15542cae4..49f10f077 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/SuppressWarningsHolder.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/SuppressWarningsHolder.java @@ -20,7 +20,6 @@ package com.puppycrawl.tools.checkstyle.checks; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; - import com.puppycrawl.tools.checkstyle.api.Check; import com.puppycrawl.tools.checkstyle.api.DetailAST; import com.puppycrawl.tools.checkstyle.api.TokenTypes; @@ -30,6 +29,7 @@ import org.apache.commons.beanutils.ConversionException; import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import java.util.Map; /** @@ -136,7 +136,7 @@ public class SuppressWarningsHolder if (sourceName.endsWith(CHECK_SUFFIX)) { endIndex -= CHECK_SUFFIX.length(); } - return sourceName.substring(startIndex, endIndex).toLowerCase(); + return sourceName.substring(startIndex, endIndex).toLowerCase(Locale.ENGLISH); } /** diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/annotation/AnnotationUseStyleCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/annotation/AnnotationUseStyleCheck.java index 3795b64b3..395509fa2 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/annotation/AnnotationUseStyleCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/annotation/AnnotationUseStyleCheck.java @@ -18,6 +18,8 @@ //////////////////////////////////////////////////////////////////////////////// package com.puppycrawl.tools.checkstyle.checks.annotation; +import java.util.Locale; + import org.apache.commons.beanutils.ConversionException; import com.puppycrawl.tools.checkstyle.api.Check; @@ -217,7 +219,7 @@ public final class AnnotationUseStyleCheck extends Check final String string) { try { - return Enum.valueOf(enuclass, string.trim().toUpperCase()); + return Enum.valueOf(enuclass, string.trim().toUpperCase(Locale.ENGLISH)); } catch (final IllegalArgumentException iae) { throw new ConversionException("unable to parse " + string, iae); diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/HiddenFieldCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/HiddenFieldCheck.java index f30e745c8..d73ee30ae 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/HiddenFieldCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/HiddenFieldCheck.java @@ -26,8 +26,10 @@ import com.puppycrawl.tools.checkstyle.api.ScopeUtils; import com.puppycrawl.tools.checkstyle.api.TokenTypes; import com.puppycrawl.tools.checkstyle.Utils; +import java.util.Locale; import java.util.Set; import java.util.regex.Pattern; + import org.apache.commons.beanutils.ConversionException; /** @@ -414,7 +416,7 @@ public class HiddenFieldCheck if (name != null && (name.length() == 1 || name.length() > 1 && !Character.isUpperCase(name.charAt(1)))) { - setterName = name.substring(0, 1).toUpperCase() + name.substring(1); + setterName = name.substring(0, 1).toUpperCase(Locale.ENGLISH) + name.substring(1); } return setterName; } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocStyleCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocStyleCheck.java index b9a2312ad..dd591c3ff 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocStyleCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocStyleCheck.java @@ -28,9 +28,11 @@ import com.puppycrawl.tools.checkstyle.api.ScopeUtils; import com.puppycrawl.tools.checkstyle.api.TextBlock; import com.puppycrawl.tools.checkstyle.api.TokenTypes; import com.puppycrawl.tools.checkstyle.checks.CheckUtils; + import java.util.ArrayDeque; import java.util.Deque; import java.util.List; +import java.util.Locale; import java.util.Set; import java.util.regex.Pattern; @@ -467,7 +469,7 @@ public class JavadocStyleCheck // Can't simply not put them on the stack, since singletons // like

and
(unhappily) may either be terminated // or not terminated. Both options are legal. - return SINGLE_TAGS.contains(tag.getId().toLowerCase()); + return SINGLE_TAGS.contains(tag.getId().toLowerCase(Locale.ENGLISH)); } /** @@ -478,7 +480,7 @@ public class JavadocStyleCheck */ private boolean isAllowedTag(HtmlTag tag) { - return ALLOWED_TAGS.contains(tag.getId().toLowerCase()); + return ALLOWED_TAGS.contains(tag.getId().toLowerCase(Locale.ENGLISH)); } /** diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/api/ScopeTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/api/ScopeTest.java index ac81f1da5..aead7fe4c 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/api/ScopeTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/api/ScopeTest.java @@ -21,8 +21,15 @@ package com.puppycrawl.tools.checkstyle.api; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; + +import java.util.Locale; + import org.junit.Test; +/** + * Test cases for {@link Scope} enumeration. + * @author Mehmet Can Cömert + */ public class ScopeTest { @Test(expected = IllegalArgumentException.class) @@ -47,6 +54,22 @@ public class ScopeTest Scope.getInstance("AnonInner"); } + @Test + public void testMixedCaseSpacesWithDifferentLocales() + { + Locale[] differentLocales = new Locale[] {new Locale("TR", "tr") }; + Locale defaultLocale = Locale.getDefault(); + try { + for (Locale differentLocale : differentLocales) { + Locale.setDefault(differentLocale); + testMixedCaseSpaces(); + } + } + finally { + Locale.setDefault(defaultLocale); + } + } + @Test public void testIsInAnonInner() { diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/api/SeverityLevelTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/api/SeverityLevelTest.java index 90e72cbe4..c096ce5bd 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/api/SeverityLevelTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/api/SeverityLevelTest.java @@ -20,8 +20,15 @@ package com.puppycrawl.tools.checkstyle.api; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; + +import java.util.Locale; + import org.junit.Test; +/** + * Test cases for {@link SeverityLevel} enumeration. + * @author Mehmet Can Cömert + */ public class SeverityLevelTest { @Test(expected = IllegalArgumentException.class) @@ -43,4 +50,20 @@ public class SeverityLevelTest SeverityLevel.getInstance(" WarniNg"); SeverityLevel.getInstance(" ERROR "); } + + @Test + public void testMixedCaseSpacesWithDifferentLocales() + { + Locale[] differentLocales = new Locale[] {new Locale("TR", "tr") }; + Locale defaultLocale = Locale.getDefault(); + try { + for (Locale differentLocale : differentLocales) { + Locale.setDefault(differentLocale); + testMixedCaseSpaces(); + } + } + finally { + Locale.setDefault(defaultLocale); + } + } }