Подтвердить что ты не робот

Предупреждение в Resharper "Возвращаемое значение чистого метода не используется"

У меня есть быстрый вопрос, касающийся предупреждения, которое я получаю от Resharper в Visual Studio для проекта на С#, над которым я работаю. Предупреждение:

"Возвращаемое значение чистого метода не используется"

Метод, где это происходит, выглядит следующим образом:

 private static bool FilePathHasInvalidChars(string userInputPath)
    {
        try
        {
            //this is where the warning occurs:
            Path.GetFullPath(userInputPath);

        }
        catch (Exception e)
        {
            Log.Error(String.Format(
                "The Program failed to run due to invalid characters or empty " + 
                "string value for the Input Directory. " + 
                "Full Path : <{0}>. Error Message : {1}.",
                userInputPath, e.Message), e);
            return true;

        }
        return false;
    }

Я думаю, я знаю, почему происходит предупреждение. Я использую Path.GetFullPath(path) только с целью перехвата всех исключений, связанных с недопустимыми символами. Путь должен быть введен пользователем как ввод, поэтому я на самом деле не использую результат Path.GetFullPath(userInputPath). Единственное использование, которое я использую для этого, - проверка того, что я использую для этого метода, - проверка того, что я делаю для основного метода, чтобы убедиться, что указанный путь не пустой или не содержит недопустимых символов.

Место, где я использую описанный выше метод, указано ниже:

if (FilePathHasInvalidChars(inputDirectory))
{
     return;
}

По сути, это всего лишь точка выхода перед началом выполнения программы с использованием недопустимого параметра.

Мне было интересно, не вызовет ли это предупреждение какие-либо проблемы, или я неправильно использую метод Path.GetFullPath таким образом, который вызовет у меня проблемы в будущем?

4b9b3361

Ответ 1

Нет, это не должно вызывать никаких проблем для вас, так как это на самом деле то, как вы хотите его использовать.

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

Изменить: Обратите внимание, что вы можете избежать подсказки и пояснить, что это специально, используя специальный комментарий Resharper, например:

// ReSharper disable once ReturnValueOfPureMethodIsNotUsed
Path.GetFullPath(userInputPath);

Изменить # 2: SynerCoder, вероятно, прав, хотя, о System.IO.Directory.Exists() является лучшим вариантом для вашей конкретной цели...

Ответ 2

В вашем примере кода вы ловите Exception, который может быть любым из следующих: ArgumentException, SecurityException, ArgumentNullException, NotSupportedException, PathTooLongException, но тот, который бросается, когда путь содержит Недопустимые символы - это ArgumentException MSDN.
Кроме того,

Я использую Path.GetFullPath(путь) только для того, чтобы улавливать все исключения, чтобы делать с недопустимыми символами.

вам следует использовать следующий код и опустить обработку исключений:

foreach (char invalidChar in Path.GetInvalidPathChars())
{
    if (userInputPath.Contains(invalidChar))
    {
        return true;
    }
}
return false;

Ответ 3

Вы не должны использовать свой собственный метод для проверки того, является ли путь незаконным. Поскольку вы проверяете каталог (inputDirectory), вы должны использовать следующий код:

if (!System.IO.Directory.Exists(inputDirectory))
{
    return;
}