Проблема SonarQube с новым FileReader - PullRequest
0 голосов
/ 21 декабря 2018

Ниже упомянутый фрагмент кода дает Сонар комментарий со следующим правилом squid: squid: S1943

  try(BufferedReader reader = new BufferedReader(**new
    FileReader**(properties.get(FILE_BASED_CONFIGURATION).toString())))
        {
             //some code
        }
 catch (IOException | ArrayIndexOutOfBoundsException e)
        {
            LOG.error("Exception while reading from File", e);
            //customerInfo.clear();
        }

[SONAR] ОСНОВНЫЕ: удалить это использование конструктора "FileReader (String) "

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Проблема здесь в том, что вы не указали кодировку для файла, что означает, что файл будет считываться с кодировкой по умолчанию вашей системы.Это означает, что поведение кода может варьироваться от системы к системе.

Вы должны явно указать кодировку файла, например,

new InputStreamReader(
   new FileInputStream(
     properties.get(FILE_BASED_CONFIGURATION).toString()), "UTF-8")

. При этом файл читается с FileInputStream(который читает байты из файла), затем упаковывает его в InputStreamReader, который преобразует эти байты в символы, используя указанную кодировку.

0 голосов
/ 21 декабря 2018

это связано с использованием системной кодировки по умолчанию для FileReader, что, как правило, плохо.Вы должны использовать

try(BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(properties.get(FILE_BASED_CONFIGURATION).toString())), encoding)))
    {
         //some code
    }
 catch (IOException | ArrayIndexOutOfBoundsException e)
    {
        LOG.error("Exception while reading from File", e);
        //customerInfo.clear();
    }
...