【问题标题】:V3022 False PositiveV3022 误报
【发布时间】:2019-01-20 15:34:08
【问题描述】:

PVS Studio 抛出 V3022:表达式“list.Count > 1”始终为假。 Program.cs 20

public class Program
{
    private static void Main()
    {
        var list = new List<string>();
        var keyvaluelist = new List<(string, string)>() { ("1", "2"), ("3", "4") };

        list.Add(DateTime.Now.ToString());

        foreach ((string Key, string Value) in keyvaluelist)
            list.Add(DateTime.Now.ToString());

        if (list.Count > 1)                    
            Console.WriteLine(list.Count);
    }
}

这是误报吗?

【问题讨论】:

  • 看来你已经证明了,是的
  • keyvaluelist 包含 2 个值。您对其进行迭代并对list 进行两次添加。加上当前时间的第一个加法。所以list中应该有三个元素。
  • 共有三个元素,我认为 PVS Studio 无法理解新旧的元组机制。
  • 堆栈溢出是创建错误报告的错误位置,如果这是您的意图。在这里试试:viva64.com/en/about-feedback
  • 虽然这是“为什么它不起作用”并提供了 MCVE,但这个问题是不言自明的,不太可能帮助任何人(例如 print("$1",2+2) 并声明它将输出'4'并询问是否可以)。它似乎是属于其他地方的错误报告,并且在错误修复后不久就会过时。

标签: c# pvs-studio


【解决方案1】:

这确实看起来像是误报。我们将进一步调查并在未来的某个版本中修复它。

此外,正如之前在 cmets 中提到的,误报报告不是 stackoverflow 问题的正确格式,因此您可以通过 support@viva64.com 或 https://www.viva64.com/en/about-feedback/ 将它们直接发送到 PVS-Studio 支持。

感谢您的反馈!

【讨论】:

    猜你喜欢
    • 2017-12-13
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 2019-01-20
    • 2021-01-18
    • 1970-01-01
    相关资源
    最近更新 更多