# V2002. Consider using the 'Ptr' version of the 'foo' function here.

Данное диагностическое правило добавлено по просьбе пользователей.

Анализатор позволяет обнаружить вызов функций, у которых существует 'Ptr' аналог. Имеются в виду функции, имеющие в составе своего названия суффикс 'Ptr', такие как: 'SetClassLongPtr', 'DSA_GetItemPtr'.

Рассмотрим исходный код:

    void foo(int a);
    void fooPtr(int a, bool b);
    ....
    void test()
    {
      foo(1); // V2002
    }

В месте вызова функции 'foo', будет выдано предупреждение V2002, так как имеется функция с тем же именем, но оканчивающаяся на 'Ptr'. Функция 'foo2' не имеет альтернативного варианта, и предупреждение выдаваться не будет.

Сообщение V2002 будет также выдано для случая:

    void fooA(char *p);
    void fooPtrA(char *p, int x);
    ....
    void test()
    {
      fooA(str); // V2002
    }

Предупреждение не выдается в случае, когда вызов одноименной функции происходит из её расширенной версии:

    class A
    {
      ....
      void foo() { .... };
      void fooPtr()
      {
        foo();  // ok
      }
      ....
    };

Родственным диагностическим сообщением является V2001.

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

CWE-477 CERT-MSC24-C