# V6036. The value from the uninitialized optional is used.

Анализатор обнаружил обращение к объекту Optional, который в свое время является потенциально пустым. В таком случае будет исключение 'NoSuchElementException'.

Рассмотрим пример:

    PClient getClient(boolean cond, String name, String company, /*args*/)
    {
      Optional<PClient> optClient = cond ?
          Optional.of(new PClient(name, company)) : Optional.empty();
      ...
      PClient pClient = optClient.get();
      ...
      return pClient;
    }

После выполнения первой строки, объект 'optClient' в зависимости от условия может инициализироваться пустым Optional. В таком случае, строчка 'optClient.get()' без проверки вызовет исключение. Это могло возникнуть по невнимательности или после рефакторинга. Как вариант, можно исправить код следующим образом:

    PClient getClient(boolean cond, String name, String company, /*args*/)
    {
      Optional<PClient> optClient = cond ?
          Optional.of(new PClient(name, company)) : Optional.empty();
      ...
      if (optClient.isPresent())
      {
        PClient pClient = optClient.get();
        ...
        return pClient;
      }
      else
      {
        return null;
      }
    }

Данная диагностика классифицируется как:

CWE-457

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V6036.