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);
}
Данная диагностика классифицируется как: