﻿# V6060\. The reference was used before it was verified against null\.

Анализатор обнаружил потенциальную ошибку, которая может привести к использованию нулевого объекта\.

Анализатор заметил в коде следующую ситуацию\. Вначале объект используется\. А уже затем этот объект проверяется на значение 'null'\. Это может означать одно из двух:

1\) Возникнет ошибка, если объект будет равен 'null'\.

2\) Программа всегда работает корректно, так как объект всегда не равен null\. Проверка является лишней\.

Рассмотрим фрагмент кода, на котором анализатор выдаст предупреждение:

```cpp
boolean isSomething(String str)
{
  String prepareStr = prepare(str);
  if (prepareStr.contains("*?*"))
  {
    ...
  }
  ...
  return prepareStr == null ? false : prepareStr.contains("?*?");
}
```



Итак, в вышеприведенном примере потенциальная ошибка или лишнее сравнение? Сначала с переменной 'prepareStr' идут какие\-то вычисления, а в конце она проверяется на null\. Здесь имеет место быть возможен как первый, так и второй случай\. Если все же метод 'prepare' может вернуть null, то необходимо внести изменения в код:

```cpp
boolean isSomething(String str)
{
  String prepareStr = prepare(str);
  if (prepareStr == null) {
    return false;
  }

  if (prepareStr.contains("*?*"))
  {
    //...
  }
  //...
  return prepareStr.contains("?*?");
}
```

Если же 'prepare' не возвращает 'null', то просто можно убрать сравнение с null, чтобы не путать ваших коллег\-разработчиков\.