From 5a52307e5a10337efb365595e716d60bcf1b4de0 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Tue, 13 Mar 2018 15:24:53 +0700 Subject: [PATCH] IDEA-188088 Suspicious parameter/name combination does not work for camelCaseWords --- ...spiciousNameCombinationInspectionBase.java | 24 +++++++++++-------- .../suspiciousNameCombination/TwoWords.java | 9 +++++++ .../SuspiciousNameCombinationTest.java | 5 +++- 3 files changed, 27 insertions(+), 11 deletions(-) create mode 100644 java/java-tests/testData/inspection/suspiciousNameCombination/TwoWords.java diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/suspiciousNameCombination/SuspiciousNameCombinationInspectionBase.java b/java/java-analysis-impl/src/com/intellij/codeInspection/suspiciousNameCombination/SuspiciousNameCombinationInspectionBase.java index 33cb47539c5d..15c1cbc2efbd 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/suspiciousNameCombination/SuspiciousNameCombinationInspectionBase.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/suspiciousNameCombination/SuspiciousNameCombinationInspectionBase.java @@ -61,7 +61,7 @@ public class SuspiciousNameCombinationInspectionBase extends AbstractBaseJavaLoc myWordToGroupMap.clear(); } - protected void addNameGroup(@NonNls final String group) { + public void addNameGroup(@NonNls final String group) { myNameGroups.add(group); List words = StringUtil.split(group, ","); for(String word: words) { @@ -197,15 +197,19 @@ public class SuspiciousNameCombinationInspectionBase extends AbstractBaseJavaLoc } String[] words = NameUtil.splitNameIntoWords(name); String result = null; - for(String word: words) { - String group = myWordToGroupMap.get(canonicalize(word)); - if (group != null) { - if (result == null) { - result = group; - } - else if (!result.equals(group)) { - result = null; - break; + for (int i = 0; i < words.length; i++) { + String word = ""; + for (int j = i; j < words.length; j++) { + word += words[j]; + String group = myWordToGroupMap.get(canonicalize(word)); + if (group != null) { + if (result == null) { + result = group; + } + else if (!result.equals(group)) { + result = null; + break; + } } } } diff --git a/java/java-tests/testData/inspection/suspiciousNameCombination/TwoWords.java b/java/java-tests/testData/inspection/suspiciousNameCombination/TwoWords.java new file mode 100644 index 000000000000..8130096e5c9f --- /dev/null +++ b/java/java-tests/testData/inspection/suspiciousNameCombination/TwoWords.java @@ -0,0 +1,9 @@ +public class TwoWords { + public void test() { + int someWord = 0, theOtherWord = 1, someWord123 = 2; + int x = someWord; + int y = theOtherWord; + someWord123 = someWord; + theOtherWord = someWord; + } +} diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/SuspiciousNameCombinationTest.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/SuspiciousNameCombinationTest.java index 8730f61aed1a..02313ef8f5f1 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/SuspiciousNameCombinationTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/SuspiciousNameCombinationTest.java @@ -34,7 +34,9 @@ public class SuspiciousNameCombinationTest extends LightInspectionTestCase { @Nullable @Override protected InspectionProfileEntry getInspection() { - return new SuspiciousNameCombinationInspection(); + SuspiciousNameCombinationInspection inspection = new SuspiciousNameCombinationInspection(); + inspection.addNameGroup("someWord,otherWord"); + return inspection; } public void testAssignment() { doTest();} @@ -42,4 +44,5 @@ public class SuspiciousNameCombinationTest extends LightInspectionTestCase { public void testParameter() { doTest();} public void testReturnValue() { doTest();} public void testExcluded() { doTest();} + public void testTwoWords() { doTest();} }