# 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);
    }

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

CWE-628