C and C++


LANG.FUNCS.PROT : Incomplete Function Prototype

Summary

A function declaration is not in prototype form: one or more of the following conditions is present.

Properties

Class Name Incomplete Function Prototype
Significance style
Mnemonic LANG.FUNCS.PROT
Categories
MisraC2023 MisraC2023:1.5 Obsolescent language features shall not be used
  MisraC2023:8.2 Function types shall be in prototype form with named parameters
Misra2012 Misra2012:1.5 Obsolescent language features shall not be used
  Misra2012:8.2 Function types shall be in prototype form with named parameters
Misra2004 Misra2004:8.1 Functions shall have prototype declarations and the prototype shall be visible at both the function definition and call
  Misra2004:16.3 Identifiers shall be given for all of the parameters in a function prototype declaration
  Misra2004:16.5 Functions with no parameters shall be declared and defined with the parameter list void
  Misra2004:16.6 The number of arguments passed to a function shall match the number of parameters
AUTOSARC++14 AUTOSARC++14:A1-1-1 All code shall conform to ISO/IEC 14882:2014 - Programming Language C++ and shall not use deprecated features.
MisraC++2023 MisraC++2023:4.1.2 Deprecated features should not be used
CERT-C CERT-C:DCL07-C Include the appropriate type information in function declarators
  CERT-C:DCL20-C Explicitly specify void when a function accepts no arguments
Availability Available for C and C++.
Enabling Checks for this warning class are disabled by default, and require the unnormalized C ASTs for the project. To enable them, add the following WARNING_FILTER rule and RETAIN_UNNORMALIZED_C_AST specification to the project configuration file.
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Incomplete Function Prototype"
Note that retaining the unnormalized ASTs will increase the disk space used to store the project representation, and may make the analysis take longer.

Example

/* beginning of file */

void prot_ok(void);                              /* valid prototype form */

void prot_empty();      /* 'Incomplete Function Prototype' warning issued here
                         * - empty parameter list. */

void prot_noname(int);                           /* valid prototype form */

void prot_notype(x);    /* 'Incomplete Function Prototype' warning issued here
                         * - parameter type is missing. */

void func_ok(int x){}                            /* valid prototype form */

void func_notype(x){}   /* 'Incomplete Function Prototype' warning issued here
                         * - parameter type is missing. */

void caller(int x){                              /* valid prototype form */
    func_ok(x);                                  /* func_ok() prototype is visible */
    void func_notype(x);                         /* func_notype() prototype is visible */
    mystery_func(x);    /* 'Incomplete Function Prototype' warning issued here
                        * - no visible prototype for mystery_func()  */
}
/* end of file */

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.