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.

[参考译文] CCS/TMS570LC4357:Misra检查规则

Guru**** 2540720 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/574338/ccs-tms570lc4357-misra-check-rules

部件号:TMS570LC4357

工具/软件:Code Composer Studio

你(们)好

我正在尝试在源代码级别使用#pragma指令停用一些MISRA-C:2004规则,但这不起作用。

我的情况如下:

#pragma check_MISRA ("无")
#include "hL_hal_stdtypes.h"
#include "hL_het.h"
#include "HL_Gio.h"
#include "HL_SPI.h"
#include "HL_ADC.h"
#pragma check_MISRA ("all,-pragma,11.3 8.7 5.6 ,-pragma,19.1 5.7 ,-pragma ")
#include "..\MVB\mvbtypes.h"
#include "..\MVB\PDL.h"
#include "..\Konconfig\Konconfig.h"

每次运行编译器时,规则(19.1 ,11.3 ,8.7 等)也会涉及,尽管我已经停用了它们。

是否有人可以帮助解决此问题?

谢谢你

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

    Rabie Hammoud 说:
    每次运行编译器时,规则(19.1 ,11.3 ,8.7 等)也会涉及,尽管我已经停用了它们。

    我不知道你的意思是什么。  即使您已禁用19.1 诊断程序,您是否仍继续看到它们?  我想现在是这样。

    我们需要一个我们可以构建的测试案例,以便我们看到相同的结果。  请 预处理 包含这些行的源文件,并将其附加到下一篇文章中。 显示编译器(而不是CCS)版本。  并按照编译器看到的方式准确显示所有生成选项。

    谢谢,此致,

    -George

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

    您好,George,

    我停用了一些MISRA-C:2004规则,如(19.1 ,11.3 ,8.7 ,5.7 ,5.6),但当我编译应用程序时,诊断警告仍然出现

    我使用了这两种方法来取消MISRA规则:

    1.使用#pragma指令:#pragma check_MISRA ("all,-pragma,11.3 8.7 5.6 ,-pragma,-pragma,19.1 5.7 ,-MISRA")


    2.通过单击“Build”->“ARM编译器”->“MISRA-C:2004 ”,然后取消激活某些规则来使用项目设置

    这两种情况都不起作用,仍然显示警告

    感谢您的帮助

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    注:我创建了您需要的. pp文件,但每次我尝试附加该文件时,都收到一个错误
    编译器版本为:TI v.15.12 .4.LTS
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    添加(不更改)文件扩展名.txt。  论坛只接受几种不同类型的文件作为附件,而.pp不是其中之一。

    谢谢,此致,

    -George

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

    e2e.ti.com/.../voltsupervision.txt

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

    感谢您提供测试案例。  我将其简化为一个简单得多的测试案例。  我想确定这与您遇到的问题相同。

    正在构建此源文件...

    #pragma check_MISRA("all")
    
    //此处存在许多MISRA违规...
    int fxn(int *ptR)
    {
    Return (int) PTR;
    } 

    如果没有任何--check_Misra选项,则不会导致诊断。  这是错误的,因为使用了#pragma。  这是否公平地反映了您的问题?

    我在 SDOWP系统中提交了CodeGen-2061以解决此问题。  欢迎您使用我签名中下面的SDOWP链接进行关注。

    谢谢,此致,

    -George

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

    你(们)好

    这是我的问题的一部分,因为我实际上想使用#pragma 指令停用一些MISRA规则。

    但没关系,这也会有所帮助。

    此致

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

    您好,Rabie:

    我看到这里有两个问题:

    1)禁用特定MISRA规则不起作用

    2) check_misra pragma和--check_misra编译器选项实际上并不像编译器文档错误地指出的那样“等效”。  

    2是编译器文档错误:启用任何MISRA检查都需要编译器选项。  文档应说明pragma和编译器选项的参数是相同的,而不是使用它们是等效的。  我打开了另一个错误来跟踪文档更新。 (CodeGen-2065)。  通过CodeGen-2061跟踪第一个问题。

    谢谢!

    安娜·优素菲

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

    当我使用编译器选项对--check_Misra运行测试用例时,我看到禁用规则的pragma正在工作。 但是,随后使用check_MISRA("all,....") pragma重新启用规则。 已禁用规则的警告全部位于已重新启用规则的源中的点之后。

    您可以比较每个禁用pragma的行号,重新启用pragma和源警告。 您还可以在第一个编译指示之后从该编译指示中删除所有“all”参数,并看到不再生成已禁用规则的警告。

    如果您有任何其他问题,请告诉我。
    谢谢!
    Anna
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Anna:

    非常感谢。 这很好。 我使用编译器选项--check_Misra激活了所有MISRA规则,然后使用#pragma停用源代码中的某些规则。

    此致。

    Rabie