>
>
>
V3185. An argument containing a file pa…


V3185. An argument containing a file path could be mixed up with another argument. The other function parameter expects a file path instead.

Анализатор обнаружил странный аргумент, переданный в метод в качестве пути к файлу. Возможно, он был перепутан местами с другим аргументом этого метода.

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

void AppendText(FileInfo file, string fileContent)
{
  var filePath = file.FullName;
  File.AppendAllText(fileContent, filePath);
}

Приведённый выше метод 'AppendText' предназначен для добавления строки 'fileContent' в файл. В переменную 'filePath' записывается путь к файлу из 'file.FullName'. После этого 'filePath' и 'fileContent' используются в качестве аргументов метода 'File.AppendAllText', выполняющего добавление текста в файл. В качестве первого аргумента этот метод принимает путь к файлу, а в качестве второго – строку для записи. Однако в приведённом выше примере эти два аргумента перепутаны местами. Результат использования такого метода зависит от содержимого 'fileContent':

  • В случае если 'fileContent' не подходит под формат файлового пути, будет выброшено исключение 'System.IOException';
  • В обратном случае будет создан новый файл и в него записано значение 'filePath'.

Для решения этой проблемы нужно переставить аргументы метода 'File.AppendAllText' в правильном порядке:

void AppendText(FileInfo file, string fileContent)
{
  var filePath = file.FullName;
  File.AppendAllText(filePath, fileContent);
}

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