Данное диагностическое правило добавлено по просьбе пользователей.
Анализатор обнаружил вызов функции, которая помечена пользователем как опасная/запрещенная.
Часто использование некоторых функций в проекте может быть запрещено. Например, в соответствии со стилем кодирования, который принят в проекте. Анализатор может находить использование таких функций, если они были размечены пользовательской аннотацией следующего вида:
//+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(); // <= }
Примечание. По умолчанию пользовательские аннотации не применяются к виртуальным функциям. О том, как включить данный функционал, вы можете прочитать здесь.
Данная диагностика классифицируется как: