allow reasonable amount of capitalized words

This commit is contained in:
Dmitry Avdeev
2017-03-14 15:38:57 +03:00
parent e86d7ed0de
commit 901c7bad2c
2 changed files with 5 additions and 2 deletions
@@ -191,16 +191,17 @@ public class TitleCapitalizationInspection extends BaseJavaLocalInspectionTool {
List<String> words = StringUtil.split(value, " ");
if (words.size() == 0) return true;
if (Character.isLetter(words.get(0).charAt(0)) && !isCapitalizedWord(words.get(0))) return false;
int capitalized = 1;
for (int i = 1, size = words.size(); i < size; i++) {
String word = words.get(i);
if (isCapitalizedWord(word)) {
// check for abbreviations like SQL or I18n
if (word.length() == 1 || !Character.isLowerCase(word.charAt(1)))
continue;
return false;
capitalized++;
}
}
return true;
return capitalized / words.size() < 0.2; // allow reasonable amount of capitalized words
}
private static boolean isCapitalizedWord(String word) {
@@ -28,5 +28,7 @@ public class CapitalizationTest extends TestCase {
assertTrue(TitleCapitalizationInspection.checkCapitalization("@charset is invalid", Nls.Capitalization.Sentence));
assertTrue(TitleCapitalizationInspection.checkCapitalization("Add 'this' qualifier", Nls.Capitalization.Sentence));
assertTrue(TitleCapitalizationInspection.checkCapitalization("Add 'this' qualifier", Nls.Capitalization.Sentence));
assertTrue(TitleCapitalizationInspection.checkCapitalization("Please select the configuration file (usually named IntelliLang.xml) to import.", Nls.Capitalization.Sentence));
assertFalse(TitleCapitalizationInspection.checkCapitalization("Foo Bar", Nls.Capitalization.Sentence));
}
}