This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TM4C123GH6PM:Misra C 可能会被误解

Guru**** 1969805 points
Other Parts Discussed in Thread: CODECOMPOSER
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/702097/compiler-tm4c123gh6pm-misra-c-may-misinterpreted

器件型号:TM4C123GH6PM
主题中讨论的其他器件: CODECOMPOSER

工具/软件:TI C/C++编译器

大家好、  

我只是对基于 Misra C 指南的静态代码分析感兴趣、我有以下由警告生成的案例、我无法理解。  

警告1:

我有 Misra 警告说:

"如果按位运算符~和<<应用于基础类型 unsigned char 或 unsigned short 的操作数、

结果应立即转换为操作数的基础类型"

在以下陈述中:

CAN0_CTL_R &=~ CAN_CTL_INIT; 

其中:  

#define CAN_CTL_init 0x00000001U //初始化
#define CAN0_CTL_R (*((volatile uint32_t *) 0x40000U) 

----------------------------------------------------

警告2:

其中是否有一个可能是 Misra 工具中的错误?  

此致、  

斯里特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提请我们注意这些问题。

    关于...

    [引用 user="sarea Hariri"] CAN0_CTL_R &=~ CAN_CTL_init;[/引用]

    我可以重现诊断。  编译器似乎不正确。  因此、我在 SDOWP 系统中提交了 CodeGen-4934、以对其进行调查。  欢迎您在我的签名中使用下面的 SDOWP 链接进行访问。

    关于第二条警告... 我无法根据在屏幕截图中看到的内容复制它。  对于包含这些源代码行的文件、请按照文章 如何提交编译器测试用例中的说明提交测试用例。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、George、

    感谢您的重播。

    关于第二个警告测试案例:

    编译器版本: TI v16.9.6.LTS [TI v18.1.0.LTS]

    生成 输出:

    ****为项目 AutosarCanStack 构建配置调试****

    "C:\\ti\\ccsv8\\utils\\bin\\gmake"-k -j 8 arch/arm-cortexM4/drivers/Can.obj -O

    编译文件:"../arch/arm-cortexM4/drivers/Can.c

    调用:ARM 编译器

    "c:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.1.LTS/bin/armcl -mv7M4 -code_state=16 --float_support=FPv4SPD16 -me --include_path="C:/Users/visitor/Documents/CODECOMPOSER /arch/arm-cortexM4/drivers/Can.c 8/autosarCanstack"--include_path="C:/ti/TivaWare_C_Series-2.1.4.178 --include_path="C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.1.LTS/include --define_TM4C123_autosrackage="-exccs_refrom-code.g_code.g_exccs_code.com/support/mccs_codest-codest-m="-codest_ab_ab_codest-m="-codest_ab_ab_codest-code.com/support/mccs_ab_codest-codest-codest_ab_ab_ab-m="-codest-codest-m="-codest-mag_ab_ab_ab_ab_ab-mag_inate-com/support/m="-codest-mag_

    "./arch/arm-cortexM4/drivers/Can.c,第61行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "./arch/arm-cortexM4/drivers/Can.c,第61行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "./arch/arm-cortexM4/drivers/Can.c,第61行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "./arch/arm-cortexM4/drivers/Can.c,第61行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "./arch/arm-cortexM4/drivers/Can.c,第61行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "./arch/arm-cortexM4/drivers/Can.c,第61行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "./arch/arm-cortexM4/drivers/Can.c,第61行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "./arch/arm-cortexM4/drivers/Can.c,第61行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "./arch/arm-cortexM4/drivers/Can.c,第61行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "./arch/arm-cortexM4/drivers/Can.c,第61行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "./arch/arm-cortexM4/drivers/Can.c,第61行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "./arch/arm-cortexM4/drivers/Can.c,第61行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "./arch/arm-cortexM4/drivers/Can.c,第61行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "./arch/arm-cortexM4/drivers/Can.c,第61行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "./arch/arm-cortexM4/drivers/Can.c,第61行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "./arch/arm-cortexM4/drivers/Can.c,第61行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "../arch/arm-cortexM4/drivers/Can.c,第68行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "../arch/arm-cortexM4/drivers/Can.c,第68行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "../arch/arm-cortexM4/drivers/Can.c,第68行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "../arch/arm-cortexM4/drivers/Can.c,第68行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "../arch/arm-cortexM4/drivers/Can.c,第68行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示和匹配数组和结构的非零初始化中的结构

    "../arch/arm-cortexM4/drivers/Can.c、第74行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示并匹配数组和结构的非零初始化中的结构

    "../arch/arm-cortexM4/drivers/Can.c、第74行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示并匹配数组和结构的非零初始化中的结构

    "../arch/arm-cortexM4/drivers/Can.c、第74行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示并匹配数组和结构的非零初始化中的结构

    "../arch/arm-cortexM4/drivers/Can.c、第74行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示并匹配数组和结构的非零初始化中的结构

    "../arch/arm-cortexM4/drivers/Can.c、第74行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示并匹配数组和结构的非零初始化中的结构

    "../arch/arm-cortexM4/drivers/Can.c、第74行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示并匹配数组和结构的非零初始化中的结构

    "../arch/arm-cortexM4/drivers/Can.c、第74行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示并匹配数组和结构的非零初始化中的结构

    "../arch/arm-cortexM4/drivers/Can.c、第74行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示并匹配数组和结构的非零初始化中的结构

    "../arch/arm-cortexM4/drivers/Can.c、第74行:警告#1391-D:(Misra-C:2004 9.2/R) Braces 应用于指示并匹配数组和结构的非零初始化中的结构

    "./arch/arm-cortexM4/drivers/Can.c "、第192行:警告#1423-D:(Misra-C:2004 17.6/R)不应将具有自动存储的对象的地址分配给在第一个对象停止存在后可能保留的另一个对象

    "../arch/arm-cortexM4/drivers/Can.c,第202行:警告#1487-D:(Misra-C:2004 12.2/R)根据标准允许的任何评估顺序,表达式的值都应相同

    "./arch/arm-cortexM4/drivers/Can.c "、第206行:警告#1476-D:(MISRA-C:2004 17.4/R)数组索引应是唯一允许的指针算术形式

    "./arch/arm-cortexM4/drivers/Can.c "、第206行:警告#1393-D:(Misra-C:2004 10.1/R)如果表达式复杂、整数类型表达式的值不应隐式转换为不同的基础类型

    "../arch/arm-cortexM4/drivers/Can.c,第248行:警告#1487-D:(Misra-C:2004 12.2/R),表达式的值应与标准允许的任何评估顺序相同

    "../arch/arm-cortexM4/drivers/Can.c、第273行:警告#188-D:无符号整数与零之间的无意义比较

    "../arch/arm-cortexM4/drivers/Can.c,第284行:警告#1487-D:(Misra-C:2004 12.2/R),表达式的值应与标准允许的任何评估顺序相同

    "./arch/arm-cortexM4/drivers/Can.c "、第289行:警告#1468-D:(Misra-C:2004 14.7/R)函数在函数末尾应具有单个退出点

    "./arch/arm-cortexM4/drivers/Can.c、第306行:警告#1397-D:(Misra-C:2004 10.5/R)如果按位运算符~和<<应用于基础类型 unsigned char 或 unsigned short 的操作数、则结果应立即转换为操作数的基础类型

    "./arch/arm-cortexM4/drivers/Can.c、第312行:警告#1397-D:(Misra-C:2004 10.5/R)如果按位运算符~和<<应用于基础类型 unsigned char 或 unsigned short 的操作数、则结果应立即转换为操作数的基础类型

    "./arch/arm-cortexM4/drivers/Can.c、第401行:警告#1397-D:(Misra-C:2004 10.5/R)如果按位运算符~和<<应用于基础类型 unsigned char 或 unsigned short 的操作数、则结果应立即转换为操作数的基础类型

    "./arch/arm-cortexM4/drivers/Can.c、第402行:警告#1397-D:(Misra-C:2004 10.5/R)如果按位运算符~和<<应用于基础类型 unsigned char 或 unsigned short 的操作数、则结果应立即转换为操作数的基础类型

    "./arch/arm-cortexM4/drivers/Can.c、第406行:警告#1397-D:(Misra-C:2004 10.5/R)如果按位运算符~和<<应用于基础类型 unsigned char 或 unsigned short 的操作数、则结果应立即转换为操作数的基础类型

    "./arch/arm-cortexM4/drivers/Can.c、第407行:警告#137-D:(Misra-C:2004 10.5/R)如果按位运算符~和<<应用于基础类型 unsigned char 或 unsigned short 的操作数、则结果应立即转换为操作数的基础类型

    "./arch/arm-cortexM4/drivers/Can.c "、第381行:警告#1468-D:(Misra-C:2004 14.7/R)函数在函数末尾应具有单个退出点

    "./arch/arm-cortexM4/drivers/Can.c "、第469行:警告#1476-D:(MISRA-C:2004 17.4/R)数组索引应是唯一允许的指针算术形式

    "./arch/arm-cortexM4/drivers/Can.c "、第469行:警告#1393-D:(MISRA-C:2004 10.1/R)如果表达式复杂、整数类型表达式的值不应隐式转换为不同的基础类型

    "./arch/arm-cortexM4/drivers/Can.c "、第447行:警告#1468-D:(Misra-C:2004 14.7/R)函数在函数末尾应具有单个退出点

    "../arch/arm-cortexM4/drivers/Can.c、第483行:警告#552-D:变量"STATUS_REGISTER_READING "已设置但从未使用

    已完成构建:"./arch/arm-cortexM4/drivers/Can.c

    ****构建完成****

    这是预处理文件:e2e.ti.com/.../6170.Can.pp.txt

    此致、  

    斯里特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提交第二个测试案例。  出现12.2 MISRA 诊断错误。  因此、我在 SDOWP 系统中提交了 CodeGen-4943、以对其进行调查。  和以前一样、欢迎您在我的签名中使用下面的 SDOWP 链接进行访问。

    谢谢、此致、

    乔治

x 出现错误。请重试或与管理员联系。