fix SIOOBE: String's split can return empty strings

This commit is contained in:
Maxim.Mossienko
2016-03-22 19:04:50 +01:00
parent a368bc1377
commit 4e7a6e8225
2 changed files with 8 additions and 6 deletions
@@ -35,6 +35,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
/**
* @author yole
@@ -182,11 +183,11 @@ public class TitleCapitalizationInspection extends BaseJavaLocalInspectionTool {
}
private static boolean checkSentenceCapitalization(@NotNull String value) {
String[] words = value.split(" ");
if (words.length == 0) return true;
if (Character.isLetter(words[0].charAt(0)) && !isCapitalizedWord(words[0])) return false;
for (int i = 1; i < words.length; i++) {
String word = words[i];
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;
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)))
@@ -198,7 +199,7 @@ public class TitleCapitalizationInspection extends BaseJavaLocalInspectionTool {
}
private static boolean isCapitalizedWord(String word) {
return Character.isLetter(word.charAt(0)) && Character.isUpperCase(word.charAt(0));
return word.length() > 0 && Character.isLetter(word.charAt(0)) && Character.isUpperCase(word.charAt(0));
}
private static class TitleCapitalizationFix implements LocalQuickFix {
@@ -27,5 +27,6 @@ public class CapitalizationTest extends TestCase {
assertTrue(TitleCapitalizationInspection.checkCapitalization("Fix C issues", Nls.Capitalization.Sentence));
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));
}
}