mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
Add coverity example (#870)
* Add coverity example * Update for CI * Fix for CI 2 * Update kernel_misra.config * Rename coverity example to coverity * Update FreeRTOSConfig.h for coverity project * Update MISRA.md * Move coverity config to coverity_misra.config * Update coverity misra config * Add README.md file * Update FreeRTOSConfig.h for coverity * Fix uncrustify and spell * Update README.md for relative link path Update README.md for relative link path * Update README.md for relative link 2 * Update MISRA.md for relateive path * Fix for format * Update coverity_misra.config * Update configuration folder * Update README.md for link * Code review suggestions Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com> --------- Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com> Co-authored-by: Ubuntu <ubuntu@ip-172-31-34-245.ap-northeast-1.compute.internal> Co-authored-by: Rahul Kar <118818625+kar-rahul-aws@users.noreply.github.com> Co-authored-by: Soren Ptak <ptaksoren@gmail.com> Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com> Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
This commit is contained in:
parent
ac7fc396a0
commit
5dbfd380f0
3
.github/scripts/kernel_checker.py
vendored
3
.github/scripts/kernel_checker.py
vendored
|
@ -62,7 +62,8 @@ KERNEL_IGNORED_EXTENSIONS = [
|
||||||
'.bat',
|
'.bat',
|
||||||
'.sh',
|
'.sh',
|
||||||
'.txt',
|
'.txt',
|
||||||
'.cmake'
|
'.cmake',
|
||||||
|
'.config'
|
||||||
]
|
]
|
||||||
|
|
||||||
KERNEL_ASM_EXTENSIONS = [
|
KERNEL_ASM_EXTENSIONS = [
|
||||||
|
|
40
MISRA.md
40
MISRA.md
|
@ -8,8 +8,8 @@ has to be efficient. To achieve that and to increase the performance, it
|
||||||
deviates from some MISRA rules. The specific deviations, suppressed inline,
|
deviates from some MISRA rules. The specific deviations, suppressed inline,
|
||||||
are listed below.
|
are listed below.
|
||||||
|
|
||||||
Additionally, [MISRA configuration](#misra-configuration) contains project
|
Additionally, [MISRA configuration file](examples/coverity/coverity_misra.config)
|
||||||
wide deviations.
|
contains project wide deviations.
|
||||||
|
|
||||||
### Suppressed with Coverity Comments
|
### Suppressed with Coverity Comments
|
||||||
To find the violation references in the source files run grep on the source code
|
To find the violation references in the source files run grep on the source code
|
||||||
|
@ -116,39 +116,3 @@ _Ref 21.6.1_
|
||||||
- The Standard Library function snprintf is used in vTaskListTasks and
|
- The Standard Library function snprintf is used in vTaskListTasks and
|
||||||
vTaskGetRunTimeStatistics APIs, both of which are utility functions only and
|
vTaskGetRunTimeStatistics APIs, both of which are utility functions only and
|
||||||
are not considered part of core kernel implementation.
|
are not considered part of core kernel implementation.
|
||||||
|
|
||||||
### MISRA configuration
|
|
||||||
|
|
||||||
Copy below content to `misra.conf` to run Coverity on FreeRTOS-Kernel.
|
|
||||||
|
|
||||||
```
|
|
||||||
// MISRA C-2012 Rules
|
|
||||||
{
|
|
||||||
version : "2.0",
|
|
||||||
standard : "c2012",
|
|
||||||
title: "Coverity MISRA Configuration",
|
|
||||||
deviations : [
|
|
||||||
// Disable the following rules.
|
|
||||||
{
|
|
||||||
deviation: "Directive 4.8",
|
|
||||||
reason: "HeapRegion_t and HeapStats_t are used only in heap files but declared in portable.h which is included in multiple source files. As a result, these definitions appear in multiple source files where they are not used."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
deviation: "Directive 4.9",
|
|
||||||
reason: "FreeRTOS-Kernel is optimised to work on small micro-controllers. To achieve that, function-like macros are used."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
deviation: "Rule 1.2",
|
|
||||||
reason: "The __attribute__ tags are used via macros which are defined in port files."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
deviation: "Rule 3.1",
|
|
||||||
reason: "We post HTTP links in code comments which contain // inside comments blocks."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
deviation: "Rule 8.7",
|
|
||||||
reason: "API functions are not used by the library outside of the files they are defined; however, they must be externally visible in order to be used by an application."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
|
@ -33,17 +33,16 @@
|
||||||
* https://freertos.org/FreeRTOS-quick-start-guide.html
|
* https://freertos.org/FreeRTOS-quick-start-guide.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* FreeRTOS includes. */
|
||||||
#include <FreeRTOS.h>
|
#include <FreeRTOS.h>
|
||||||
#include <task.h>
|
#include <task.h>
|
||||||
#include <queue.h>
|
#include <queue.h>
|
||||||
#include <timers.h>
|
#include <timers.h>
|
||||||
#include <semphr.h>
|
#include <semphr.h>
|
||||||
|
|
||||||
|
/* Standard includes. */
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
static StaticTask_t exampleTaskTCB;
|
|
||||||
static StackType_t exampleTaskStack[ configMINIMAL_STACK_SIZE ];
|
|
||||||
|
|
||||||
void exampleTask( void * parameters )
|
void exampleTask( void * parameters )
|
||||||
{
|
{
|
||||||
/* Unused parameters. */
|
/* Unused parameters. */
|
||||||
|
@ -55,9 +54,13 @@ void exampleTask( void * parameters )
|
||||||
vTaskDelay( 100 ); /* delay 100 ticks */
|
vTaskDelay( 100 ); /* delay 100 ticks */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void main( void )
|
void main( void )
|
||||||
{
|
{
|
||||||
|
static StaticTask_t exampleTaskTCB;
|
||||||
|
static StackType_t exampleTaskStack[ configMINIMAL_STACK_SIZE ];
|
||||||
|
|
||||||
printf( "Example FreeRTOS Project\n" );
|
printf( "Example FreeRTOS Project\n" );
|
||||||
|
|
||||||
xTaskCreateStatic( exampleTask,
|
xTaskCreateStatic( exampleTask,
|
||||||
|
@ -65,8 +68,8 @@ void main( void )
|
||||||
configMINIMAL_STACK_SIZE,
|
configMINIMAL_STACK_SIZE,
|
||||||
NULL,
|
NULL,
|
||||||
configMAX_PRIORITIES - 1,
|
configMAX_PRIORITIES - 1,
|
||||||
exampleTaskStack,
|
&( exampleTaskStack[ 0 ] ),
|
||||||
&exampleTaskTCB );
|
&( exampleTaskTCB ) );
|
||||||
|
|
||||||
/* Start the scheduler. */
|
/* Start the scheduler. */
|
||||||
vTaskStartScheduler();
|
vTaskStartScheduler();
|
||||||
|
@ -76,6 +79,7 @@ void main( void )
|
||||||
/* Should not reach here. */
|
/* Should not reach here. */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vApplicationStackOverflowHook( TaskHandle_t xTask,
|
void vApplicationStackOverflowHook( TaskHandle_t xTask,
|
||||||
char * pcTaskName )
|
char * pcTaskName )
|
||||||
|
@ -85,3 +89,4 @@ void vApplicationStackOverflowHook( TaskHandle_t xTask,
|
||||||
( void ) xTask;
|
( void ) xTask;
|
||||||
( void ) pcTaskName;
|
( void ) pcTaskName;
|
||||||
}
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
39
examples/coverity/CMakeLists.txt
Normal file
39
examples/coverity/CMakeLists.txt
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
cmake_minimum_required(VERSION 3.15)
|
||||||
|
|
||||||
|
project(coverity)
|
||||||
|
|
||||||
|
set(FREERTOS_KERNEL_PATH "../../")
|
||||||
|
FILE(GLOB FREERTOS_KERNEL_SOURCE ${FREERTOS_KERNEL_PATH}*.c)
|
||||||
|
|
||||||
|
# Coverity incorrectly infers the type of pdTRUE and pdFALSE as boolean because
|
||||||
|
# of their names. This generates multiple false positive warnings about type
|
||||||
|
# mismatch. Replace pdTRUE with pdPASS and pdFALSE with pdFAIL to avoid these
|
||||||
|
# false positive warnings. This workaround will not be needed after Coverity
|
||||||
|
# fixes the issue of incorrectly inferring the type of pdTRUE and pdFALSE as
|
||||||
|
# boolean.
|
||||||
|
add_custom_target(fix_source ALL
|
||||||
|
COMMAND sed -i -b -e 's/pdFALSE/pdFAIL/g' -e 's/pdTRUE/pdPASS/g' ${FREERTOS_KERNEL_SOURCE}
|
||||||
|
DEPENDS ${FREERTOS_KERNEL_SOURCE})
|
||||||
|
|
||||||
|
# Add the freertos_config for FreeRTOS-Kernel.
|
||||||
|
add_library(freertos_config INTERFACE)
|
||||||
|
|
||||||
|
target_include_directories(freertos_config
|
||||||
|
INTERFACE
|
||||||
|
./)
|
||||||
|
|
||||||
|
# Select the heap. Values between 1-5 will pick a heap.
|
||||||
|
set(FREERTOS_HEAP "3" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
|
# Select the FreeRTOS port.
|
||||||
|
set(FREERTOS_PORT "TEMPLATE" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
|
# Add the FreeRTOS-Kernel subdirectory.
|
||||||
|
add_subdirectory(${FREERTOS_KERNEL_PATH} FreeRTOS-Kernel)
|
||||||
|
|
||||||
|
add_executable(${PROJECT_NAME}
|
||||||
|
../cmake_example/main.c)
|
||||||
|
|
||||||
|
add_dependencies(${PROJECT_NAME} fix_source)
|
||||||
|
|
||||||
|
target_link_libraries(${PROJECT_NAME} freertos_kernel freertos_config)
|
135
examples/coverity/FreeRTOSConfig.h
Normal file
135
examples/coverity/FreeRTOSConfig.h
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
/*
|
||||||
|
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
||||||
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
* this software and associated documentation files (the "Software"), to deal in
|
||||||
|
* the Software without restriction, including without limitation the rights to
|
||||||
|
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
* subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
* https://www.FreeRTOS.org
|
||||||
|
* https://github.com/FreeRTOS
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FREERTOS_CONFIG_H
|
||||||
|
#define FREERTOS_CONFIG_H
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
/* Hardware description related definitions. **********************************/
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
#define configCPU_CLOCK_HZ ( ( unsigned long ) 20000000 )
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
/* Scheduling behaviour related definitions. **********************************/
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
#define configTICK_RATE_HZ ( 100U )
|
||||||
|
#define configUSE_PREEMPTION 1
|
||||||
|
#define configUSE_TIME_SLICING 1
|
||||||
|
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0
|
||||||
|
#define configUSE_TICKLESS_IDLE 1
|
||||||
|
#define configMAX_PRIORITIES 5U
|
||||||
|
#define configMINIMAL_STACK_SIZE 128U
|
||||||
|
#define configMAX_TASK_NAME_LEN 4U
|
||||||
|
#define configTICK_TYPE_WIDTH_IN_BITS TICK_TYPE_WIDTH_64_BITS
|
||||||
|
#define configIDLE_SHOULD_YIELD 1
|
||||||
|
#define configTASK_NOTIFICATION_ARRAY_ENTRIES 1U
|
||||||
|
#define configQUEUE_REGISTRY_SIZE 0U
|
||||||
|
#define configENABLE_BACKWARD_COMPATIBILITY 1
|
||||||
|
#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 0
|
||||||
|
#define configSTACK_DEPTH_TYPE size_t
|
||||||
|
#define configMESSAGE_BUFFER_LENGTH_TYPE size_t
|
||||||
|
#define configUSE_NEWLIB_REENTRANT 0
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
/* Software timer related definitions. ****************************************/
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
#define configUSE_TIMERS 1
|
||||||
|
#define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 1U )
|
||||||
|
#define configTIMER_TASK_STACK_DEPTH configMINIMAL_STACK_SIZE
|
||||||
|
#define configTIMER_QUEUE_LENGTH 10U
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
/* Memory allocation related definitions. *************************************/
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
#define configSUPPORT_STATIC_ALLOCATION 1
|
||||||
|
#define configSUPPORT_DYNAMIC_ALLOCATION 1
|
||||||
|
#define configTOTAL_HEAP_SIZE 4096U
|
||||||
|
#define configAPPLICATION_ALLOCATED_HEAP 1
|
||||||
|
#define configSTACK_ALLOCATION_FROM_SEPARATE_HEAP 0
|
||||||
|
#define configUSE_MINI_LIST_ITEM 0
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
/* Interrupt nesting behaviour configuration. *********************************/
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
#define configKERNEL_INTERRUPT_PRIORITY 0U
|
||||||
|
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 0U
|
||||||
|
#define configMAX_API_CALL_INTERRUPT_PRIORITY 0U
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
/* Hook and callback function related definitions. ****************************/
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
#define configUSE_IDLE_HOOK 0
|
||||||
|
#define configUSE_TICK_HOOK 0
|
||||||
|
#define configUSE_MALLOC_FAILED_HOOK 0
|
||||||
|
#define configUSE_DAEMON_TASK_STARTUP_HOOK 0
|
||||||
|
#define configCHECK_FOR_STACK_OVERFLOW 0
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
/* Run time and task stats gathering related definitions. *********************/
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
#define configGENERATE_RUN_TIME_STATS 0
|
||||||
|
#define configUSE_TRACE_FACILITY 0
|
||||||
|
#define configUSE_STATS_FORMATTING_FUNCTIONS 0
|
||||||
|
#define configKERNEL_PROVIDED_STATIC_MEMORY 1
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
/* Definitions that include or exclude functionality. *************************/
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
#define configUSE_TASK_NOTIFICATIONS 1
|
||||||
|
#define configUSE_MUTEXES 1
|
||||||
|
#define configUSE_RECURSIVE_MUTEXES 1
|
||||||
|
#define configUSE_COUNTING_SEMAPHORES 1
|
||||||
|
#define configUSE_QUEUE_SETS 1
|
||||||
|
#define configUSE_APPLICATION_TASK_TAG 1
|
||||||
|
#define INCLUDE_vTaskPrioritySet 1
|
||||||
|
#define INCLUDE_uxTaskPriorityGet 1
|
||||||
|
#define INCLUDE_vTaskDelete 1
|
||||||
|
#define INCLUDE_vTaskSuspend 1
|
||||||
|
#define INCLUDE_xResumeFromISR 1
|
||||||
|
#define INCLUDE_vTaskDelayUntil 1
|
||||||
|
#define INCLUDE_vTaskDelay 1
|
||||||
|
#define INCLUDE_xTaskGetSchedulerState 1
|
||||||
|
#define INCLUDE_xTaskGetCurrentTaskHandle 1
|
||||||
|
#define INCLUDE_uxTaskGetStackHighWaterMark 1
|
||||||
|
#define INCLUDE_xTaskGetIdleTaskHandle 1
|
||||||
|
#define INCLUDE_eTaskGetState 1
|
||||||
|
#define INCLUDE_xEventGroupSetBitFromISR 1
|
||||||
|
#define INCLUDE_xTimerPendFunctionCall 1
|
||||||
|
#define INCLUDE_xTaskAbortDelay 1
|
||||||
|
#define INCLUDE_xTaskGetHandle 1
|
||||||
|
#define INCLUDE_xTaskResumeFromISR 1
|
||||||
|
|
||||||
|
#endif /* FREERTOS_CONFIG_H */
|
58
examples/coverity/README.md
Normal file
58
examples/coverity/README.md
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
# MISRA Compliance for FreeRTOS-Kernel
|
||||||
|
FreeRTOS-Kernel is MISRA C:2012 compliant. This directory contains a project to
|
||||||
|
run [Synopsys Coverity](https://www.synopsys.com/software-integrity/security-testing/static-analysis-sast.html)
|
||||||
|
for checking MISRA compliance.
|
||||||
|
|
||||||
|
> **Note**
|
||||||
|
Coverity version 2022.6.1 incorrectly infers the type of `pdTRUE` and `pdFALSE`
|
||||||
|
as boolean because of their names, resulting in multiple false positive warnings
|
||||||
|
about type mismatch. We replace `pdTRUE` with `pdPASS` and `pdFALSE` with
|
||||||
|
`pdFAIL` to avoid these false positive warnings. This workaround will not be
|
||||||
|
needed after Coverity fixes the issue of incorrectly inferring the type of
|
||||||
|
`pdTRUE` and `pdFALSE` as boolean.
|
||||||
|
|
||||||
|
Deviations from the MISRA C:2012 guidelines are documented in
|
||||||
|
[MISRA.md](../../MISRA.md) and [coverity_misra.config](coverity_misra.config)
|
||||||
|
files.
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
### Prerequisites
|
||||||
|
Coverity can be run on any platform mentioned [here](https://sig-docs.synopsys.com/polaris/topics/c_coverity-compatible-platforms.html).
|
||||||
|
The following are the prerequisites to generate coverity report:
|
||||||
|
|
||||||
|
1. CMake version > 3.13.0 (You can check whether you have this by typing `cmake --version`).
|
||||||
|
2. GCC compiler.
|
||||||
|
- See download and installation instructions [here](https://gcc.gnu.org/install/).
|
||||||
|
3. Clone the repo using the following command:
|
||||||
|
- `git clone https://github.com/FreeRTOS/FreeRTOS-Kernel.git ./FreeRTOS-Kernel`
|
||||||
|
|
||||||
|
### Generating Report
|
||||||
|
Go to the root directory of the FreeRTOS-Kernel repo and run the following
|
||||||
|
commands in a terminal:
|
||||||
|
1. Update the compiler configuration in Coverity:
|
||||||
|
~~~
|
||||||
|
cov-configure --force --compiler cc --comptype gcc
|
||||||
|
~~~
|
||||||
|
2. Create the build files using CMake in a `build` directory:
|
||||||
|
~~~
|
||||||
|
cmake -B build -S examples/coverity
|
||||||
|
~~~
|
||||||
|
3. Build the (pseudo) application:
|
||||||
|
~~~
|
||||||
|
cd build/
|
||||||
|
cov-build --emit-complementary-info --dir cov-out make
|
||||||
|
~~~
|
||||||
|
4. Go to the Coverity output directory (`cov-out`) and begin Coverity static
|
||||||
|
analysis:
|
||||||
|
~~~
|
||||||
|
cd cov-out/
|
||||||
|
cov-analyze --dir ./cov-out \
|
||||||
|
--coding-standard-config ../examples/coverity/coverity_misra.config \
|
||||||
|
--tu-pattern "file('.*/FreeRTOS/Source/[A-Za-z_]*\.c')
|
||||||
|
~~~
|
||||||
|
5. Generate the HTML report:
|
||||||
|
~~~
|
||||||
|
cov-format-errors --dir ./cov-out --html-output html-output
|
||||||
|
~~~
|
||||||
|
|
||||||
|
HTML report should now be generated in a directory named `html-output`.
|
97
examples/coverity/coverity_misra.config
Normal file
97
examples/coverity/coverity_misra.config
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
// MISRA C-2012 Rules
|
||||||
|
|
||||||
|
{
|
||||||
|
version : "2.0",
|
||||||
|
standard : "c2012",
|
||||||
|
title: "Coverity MISRA Configuration",
|
||||||
|
deviations : [
|
||||||
|
// Disable the following rules.
|
||||||
|
{
|
||||||
|
deviation: "Rule 3.1",
|
||||||
|
reason: "We post HTTP links in code comments which contain // inside comments blocks."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Rule 14.4",
|
||||||
|
reason: "do while( 0 ) pattern is used in macros to prevent extra semi-colon."
|
||||||
|
},
|
||||||
|
|
||||||
|
// Disable the following advisory rules and directives.
|
||||||
|
{
|
||||||
|
deviation: "Directive 4.4",
|
||||||
|
reason: "Code snippet is used in comment to help explanation."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Directive 4.5",
|
||||||
|
reason: "Allow names that MISRA considers ambiguous."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Directive 4.6",
|
||||||
|
reason: "Allow port to use primitive type with typedefs."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Directive 4.8",
|
||||||
|
reason: "HeapRegion_t and HeapStats_t are used only in heap files but declared in portable.h which is included in multiple source files. As a result, these definitions appear in multiple source files where they are not used."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Directive 4.9",
|
||||||
|
reason: "FreeRTOS-Kernel is optimised to work on small micro-controllers. To achieve that, function-like macros are used."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Rule 2.3",
|
||||||
|
reason: "FreeRTOS defines types which is used in application."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Rule 2.4",
|
||||||
|
reason: "Allow to define unused tag."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Rule 2.5",
|
||||||
|
reason: "Allow to define unused macro."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Rule 5.9",
|
||||||
|
reason: "Allow to define identifier with the same name in structure and global variable."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Rule 8.7",
|
||||||
|
reason: "API functions are not used by the library outside of the files they are defined; however, they must be externally visible in order to be used by an application."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Rule 8.9",
|
||||||
|
reason: "Allow to object to be defined in wider scope for debug purpose."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Rule 8.13",
|
||||||
|
reason: "Allow to not to use const-qualified type for callback function."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Rule 11.4",
|
||||||
|
reason: "Allow to convert between a pointer to object and an interger type for stack alignment."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Rule 15.4",
|
||||||
|
reason: "Allow to use multiple break statements in a loop."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Rule 15.5",
|
||||||
|
reason: "Allow to use multiple points of exit."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Rule 17.8",
|
||||||
|
reason: "Allow to update the parameters of a function."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Rule 18.4",
|
||||||
|
reason: "Allow to use pointer arithmetic."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Rule 19.2",
|
||||||
|
reason: "Allow to use union."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deviation: "Rule 20.5",
|
||||||
|
reason: "Allow to use #undef for MPU wrappers."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue