From fc887eade4785d972c01aa6f83256bdaa4f8db11 Mon Sep 17 00:00:00 2001 From: Shiqing Gao Date: Fri, 25 Jan 2019 15:34:59 +0800 Subject: [PATCH] doc: update coding guidelines - update and add some rules in coding guidelines Tracked-On: #861 Signed-off-by: Shiqing Gao --- doc/developer-guides/coding_guidelines.rst | 128 ++++++++++++++++++++- 1 file changed, 125 insertions(+), 3 deletions(-) diff --git a/doc/developer-guides/coding_guidelines.rst b/doc/developer-guides/coding_guidelines.rst index 8748a35ab..781c9ccd5 100644 --- a/doc/developer-guides/coding_guidelines.rst +++ b/doc/developer-guides/coding_guidelines.rst @@ -660,6 +660,41 @@ Compliant example:: } +FN-10: The formal parameter type of a function shall be consistent +================================================================== + +The formal parameter type of a function shall be the same between its +declaration and definition. + +Compliant example:: + + /* In `showcase.h`: */ + uint32_t func_showcase(uint32_t param); + + /* In `showcase.c`: */ + #include "showcase.h" + + uint32_t func_showcase(uint32_t param) + { + return param; + } + +.. rst-class:: non-compliant-code + + Non-compliant example:: + + /* In `showcase.h`: */ + uint32_t func_showcase(uint64_t param); + + /* In `showcase.c`: */ + #include "showcase.h" + + uint32_t func_showcase(uint32_t param) + { + return param; + } + + Statements ********** @@ -1099,6 +1134,28 @@ Compliant example:: showcase_test = showcase++; +ST-19: Array indexing shall be in-bounds +======================================== + +An array index value shall be between zero (for the first element) and the array +size minus one (for the last element). Out-of-bound array references are an +undefined behavior and shall be avoided. + +Compliant example:: + + char showcase_array[4] = {'s', 'h', 'o', 'w'}; + + char showcase = showcase_array[0]; + +.. rst-class:: non-compliant-code + + Non-compliant example:: + + char showcase_array[4] = {'s', 'h', 'o', 'w'}; + + char showcase = showcase_array[10]; + + Expressions *********** @@ -1696,6 +1753,40 @@ Compliant example:: char chr = showcase[1]; +TY-20: The actual parameter type shall be the same as the formal parameter type +=============================================================================== + +Compliant example:: + + void func_showcase(uint32_t formal_param) + { + printf("formal_param: %d \n", formal_param); + } + + void main(void) + { + uint32_t actual_param = 32U; + + func_showcase(actual_param); + } + +.. rst-class:: non-compliant-code + + Non-compliant example:: + + void func_showcase(uint32_t formal_param) + { + printf("formal_param: %d \n", formal_param); + } + + void main(void) + { + uint64_t actual_param = 32UL; + + func_showcase(actual_param); + } + + Identifiers *********** @@ -1766,8 +1857,12 @@ Compliant example:: }; -ID-03: A global variable name shall not be the same as the name of struct, union, or enum -========================================================================================= +ID-03: A global variable name shall be unique +============================================= + +A global variable name shall not be the same as the name of struct, union, enum, +typedef, function, function parameter, macro, member, enum constant, local +variable, or other global variables. Compliant example:: @@ -1838,7 +1933,8 @@ ID-05: The function name shall be unique ======================================== The function name shall not be the same as the name of struct, union, enum, -variable, or other functions. +typedef, macro, member, enum constant, variable, function parameter, or other +functions. Compliant example:: @@ -1901,3 +1997,29 @@ Compliant example:: uint32_t __showcase; +ID-08: A variable name shall not be the same as struct, union or enum +===================================================================== + +Compliant example:: + + struct struct_showcase + { + char *str_source; + char *str_destination; + }; + + uint32_t showcase; + +.. rst-class:: non-compliant-code + + Non-compliant example:: + + struct showcase + { + char *str_source; + char *str_destination; + }; + + uint32_t showcase; + +