# V2016. Consider inspecting the function call. The function was annotated as dangerous.

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

Анализатор обнаружил вызов функции, которая помечена пользователем как опасная/запрещенная.

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

    //+V2016, function:foo
    //+V2016, class:SomeClass, function:foo
    //+V2016, namespace:SomeNamespace, class:SomeClass, function:foo

Например, пользователь отметил функцию 'malloc' следующим образом:

    //+V2016, function:malloc

Теперь, если анализатор встретит вызов функции 'malloc', то выдаст предупреждение 1 уровня:

    struct SomeStruct { .... };

    void foo()
    {
      struct SomeStruct *p = (SomeStruct *) malloc(....);
    }

Пользователь может проаннотировать функцию, лежащую в любом пространстве имен и/или классе:

    class A
    {
      // ....
      void a(int);
      // ....
    };

    namespace BN
    {
      class B
      {
        // ....
        void b(double);
        // ....
      };
    }

    //+V2016, class:A, function:a
    //+V2016, namespace:BN, class:B, function:b

    void foo()
    {
      A a;
      a.a();   // <=

      BN::B b;
      b.b();   // <=
    }

Примечание. По умолчанию пользовательские аннотации не применяются к виртуальным функциям. О том, как включить данный функционал, вы можете прочитать здесь.

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

CWE-1177