0

我正在尝试在从 Klocwork(KW) 生成的 C++ 代码中修复以下代码异味:

MISRA.INIT.BRACES:初始化器大括号放置不正确

下面是我试图清理的代码片段。

    typedef char charString[10];

    enum SomeEnum
    {
        BLAH1_e,
        BLAH2_e,
        BLAH3_e
    };

    struct ParentStruct
    {
        SomeEnum myEnumValue;
        charString myCharStringValue;
    };

    // This is the the part that KW is not happy about
    // KW complaining about initializer bracer placement
    const ParentStruct myParent[3] = 
    {
        {BLAH1_e, "String1"},
        {BLAH2_e, "String2"},
        {BLAH3_e, "String3"}
    }

我尝试了许多不同的护腕放置方式,但似乎无法弄清楚我目前拥有的护腕放置的确切问题。这不会产生任何编译错误,也不会对代码产生负面影响。也许这只是KW,但只是想在我完全放弃之前得到一些想法。

下面是我尝试的另一种护腕放置,以防有人将其作为答案扔掉:

    // compiles but KW does not like this as well
    const ParentStruct myParent[3] = 
    {
        {BLAH1_e, {"String1"}},
        {BLAH2_e, {"String2"}},
        {BLAH3_e, {"String3"}}
    }

    
4

1 回答 1

0

请使用最新版本的 Klocwork 运行分析,并检查 Klocwork 是否已在您端报告此问题。

我正在使用 Klocwork 2021.3,似乎 MISRA.INIT.BRACES 检查器没有按预期报告您的代码的任何问题。

于 2021-11-29T12:54:58.600 回答