Menu

false positive ? misra-c2012-8.4

Julien
2021-10-25
2021-10-26
  • Julien

    Julien - 2021-10-25

    Hi,

    I would like to discuss this issue before creating a ticket :

    In .c file :

    enum
    {
        BLDC_SENSORS_0 = 0,
        BLDC_SENSORS_1,
        BLDC_SENSORS_2,
        BLDC_SENSORS_3,
        BLDC_SENSORS_4,
        BLDC_SENSORS_5,
        BLDC_SENSORS_6,
        BLDC_SENSORS_7
    } BLDC_SENSORS_STATE_e;
    

    That are used on this same .c file in if statements to check values from an uint8_t variable.

    And I get following MISRA error :

    style: Required A compatible declaration shall be visible when an object or function with external linkage is defined [misra-c2012-8.4]
    } BLDC_SENSORS_STATE_e;
    ^

    I guess this is a false positive right ?

     
  • Julien

    Julien - 2021-10-25

    Removing BLDC_SENSORS_STATE_e fix this issue :

    enum
    {
        BLDC_SENSORS_0 = 0,
        BLDC_SENSORS_1,
        BLDC_SENSORS_2,
        BLDC_SENSORS_3,
        BLDC_SENSORS_4,
        BLDC_SENSORS_5,
        BLDC_SENSORS_6,
        BLDC_SENSORS_7
    } ;
    

    I usually name my enums as if it were a typedef, but it's probably bad practice...

     
  • Daniel Marjamäki

    but it's probably bad practice

    Yes if you do not intend to use the variable BLDC_SENSORS_STATE_e then do not declare it.

    maybe this code that declares the type "enum BLDC_SENSORS_STATE_e" is what you want:

    enum BLDC_SENSORS_STATE_e
    {
        BLDC_SENSORS_0 = 0,
        BLDC_SENSORS_1,
        BLDC_SENSORS_2,
        BLDC_SENSORS_3,
        BLDC_SENSORS_4,
        BLDC_SENSORS_5,
        BLDC_SENSORS_6,
        BLDC_SENSORS_7
    } ;
    
     
  • Julien

    Julien - 2021-10-26

    Thank you for your answer.

    I tried your approach but this trigger another rule : misra-c2012-10.4 and I should cast BLDC_SENSORS_0 everytime I use it to compare with an uint8_t var.

    void MyFunc(uint8_t Value)
    {
        if (Value == BLDC_SENSORS_0) // misra-c2012-10.4 : != same essential type
        {
            ;
        }
     }
    
     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.