Анализатор обнаружил потенциально возможную ошибку, связанную с тем, что в качестве фактического аргумента в функцию передаётся очень странное значение.
Рассмотрим примеры:
Недопустимый индекс
String SomeMethod(String mask, char ch) { String name = mask.substring(0, mask.indexOf(ch)); ... return name; }
IndexOf() возращает позицию искомого аргумента. Если аргумент не найден, то функция возвращает значение '-1'. А если передать отрицательный индекс в функцию substring(), то возникнет 'StringIndexOutOfBoundsException'.
Корректный вариант:
String SomeMethod(String mask, char ch) { int pos = mask.indexOf(ch); if (pos < 0) return "error"; String name = mask.substring(0, pos); ... return name; }
Null аргумент
String[] SplitFunc(String s, String d) { ... if (d == null) { return s.split(d); } return null; }
По ряду причин была произведена некорректная проверка, из-за чего в функцию split() передается аргумент равный null. В результате чего функция сгенерирует исключение 'NullPointerException'.
Корректный вариант:
String[] SplitFunc(String s, String d) { ... if (d != null) { return s.split(d); } return null; }
Сравнение с самим собой
... return obj.equals(obj);
Фрагмент кода возвращает результат сравнения некоторого объекта с самим собой. Не странно ли? Скорее всего имело место сравнение с каким-то другим объектом:
... return obj.equals(obj2);
Данная диагностика классифицируется как:
Взгляните на примеры ошибок, обнаруженных с помощью диагностики V6009. |