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

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

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

Часто использование некоторых функций в проекте может быть запрещено\. Например, в соответствии со стилем кодирования, который принят в проекте\. Анализатор может находить использование таких функций, если они были размечены [пользовательской аннотацией](https://pvs-studio.ru/ru/docs/manual/0040/) следующего вида: 

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

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

```cpp
//+V2016, function:malloc
```

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

```cpp
struct SomeStruct { .... };

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

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

```cpp
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();   // <=
}
```

**Примечание\.** По умолчанию пользовательские аннотации не применяются к виртуальным функциям\. О том, как включить данный функционал, вы можете прочитать [здесь](https://pvs-studio.ru/ru/docs/warnings/v016/)\.