au-misra.lnt
上传用户:filter2008
上传日期:2010-03-12
资源大小:2959k
文件大小:22k
源码类别:

编辑器/阅读器

开发平台:

C/C++

  1. // au-misra.lnt -- Author options - Misra
  2. /*
  3.     This options file can be used to explicitly activate those
  4.     checks advocated by the Motor Industry Software Reliability
  5.     Association.
  6.     You can use this file directly when linting your programs as in:
  7.     lin  au-misra  files
  8.  */
  9.     +e960                      /* enable special MISRA messages */
  10.     +e961                      /* enable special MISRA messages */
  11. +e834
  12. /* Rule 1 (req) *************************************/
  13. -A /* strict ANSI */
  14. +e950 /* flag non-ANSI word or construct */
  15. -append(950,[Misra Rule 1])
  16. /* Rule 2 (adv) *************************************/
  17. /* Rule 3 (adv) *****************************************/
  18. -rw( asm, _asm, __asm ) /* remove asm built-in's */
  19. -dasm=_ignore_init /* define asm as a ... */
  20. +rw( _ignore_init ) /* function introduction */
  21. /* Rule 4 (adv) **********************************/
  22. /* Rule 5 (req) *********************************/
  23. +e606         /* non-ANSI escape sequence */
  24.     -append(606,[Misra Rule 5])
  25. /* Rule 6 (req) **********************************/
  26. /* Rule 7 (req) ************************************/
  27.     -ftg                        /* inhibit use of trigraphs */
  28.     +e739                       /* activate trigraph in string message */
  29.     -append(739,[Misra Rule 7])
  30. /* Rule 8 (req) ****************************************/
  31.     -fwc                        /* deactivate wchar_t */
  32. /* no option to detect L"..." */
  33. /* Rule 9 (req) **************************************/
  34.     -fnc                        /* flag nested comments */
  35.     +e602                       /* comment within comment */
  36.     -append(602,[Misra Rule 9])
  37. /* Rule 10 (adv) ************************************/
  38.     /* no option for this */
  39. /* Rule 11 (req) ***********************************/
  40.     -idlen(31)   /* flag names identical in the first 31 characters */
  41.     +e621        /* Identifier clash - length set by -idlen */
  42.     -append(621,[Misra Rule 11])
  43. /* Rule 12 (adv) ****************************************/
  44.     +e578                         /* enable reports of name hiding */
  45.     +e580                         /* enable reports of name hiding */
  46.     -append(578,[Misra Rules 12, 21, and 27])
  47.     -append(580,[Misra Rule 12])
  48. /* Rule 13 (adv) *****************************************/
  49.     +e970               /* flag modifiers used outside of typedefs */
  50.     -append(970,[MISRA Rule 13])
  51. /* Rule 14 (req) ******************************************/
  52.     +e971               /* flag char without signed or unsigned */
  53.     -append(971,[MISRA Rule 14])
  54. /* Rule 15 (adv) ******************************************/
  55. /* Rule 16 (req) *****************************************/
  56. /* Rule 17 (req) ******************************************/
  57.     +e623               /* redefining the storage class of symbol */
  58.     -append(623,[Misra Rule 17])
  59. /* Rule 18  (adv) ********************************/
  60.     /* we generate note 961 as below */
  61.     /* Note 961: Violates MISRA Advisory Rule 18, Constant requires numerical suffix */
  62. /* Rule 19 (req) **************************************/
  63.     /* we generate note 960 as below */
  64.     /* Note 960: Violates MISRA Required Rule 19, Octal constant used */
  65. /* Rule 20 (req) **************************************/
  66.     +e40                         /* undeclared indentifier */
  67.     -append( 40,[MISRA Rule 20])
  68.     +e718                        /* Symbol undeclared */
  69.     -append(718,[Misra Rules 20 and 71])
  70.     +e746
  71.     -append(746,[Misra Rules 20 and 71])
  72. /* Rule 21 (req) **************************************/
  73.     /* +e578 Declaration of Symbol hides Symbol */
  74. /* Rule 22 (adv) ***************************************/
  75.     +e956
  76.     -append(956,[MISRA Rule 22])
  77. /* Rule 23 (adv)  **************************************/
  78.     +e765                   /* symbol previously used as static */
  79.     -append(765,[Misra Rule 23])
  80. /* Rule 24 (req) **************************************/
  81.     +e512                        /* symbol previously used as static */
  82.     -append(512,[Misra Rule 24])
  83. /* Rule 25 (req) **************************************/
  84.     +e14                         /* symbol previously defined */
  85.     -append(14,[Misra Rule 25])
  86. /* Rule 26 (req) ***************************************/
  87.     +e15                          /* symbol redeclared */
  88.     -append(15,[Misra Rule 26])
  89. /* Rule 27 (adv) **************************************/
  90.     /* +e578 Declaration of Symbol hides Symbol */
  91. /* Rule 28 (adv) **************************************/
  92.     /* we generate note 961 as below */
  93.     /* Note 961: Violates MISRA Advisory Rule 28, 'register' class discouraged */
  94. /* Rule 29 (req) **************************************/
  95.     +e64                    /* flag type mismatch */
  96.     -append(64,[MISRA Rule 29])
  97. /* Rule 30 (req) **************************************/
  98.     +e644                   /* Symbol may not have been initialized */
  99.     +e771                   /* Symbol conceivably not intitialized */
  100.     +e530                   /* Symbol not initialized */
  101.     -append(644,[MISRA Rule 30])
  102.     -append(771,[MISRA Rule 30])
  103.     -append(530,[MISRA Rule 30])
  104. /* Rule 31 (req) **************************************/
  105.     +e940                   /* omitted braces within an initializer */
  106.     -append(940,[MISRA Rule 31])
  107. /* Rule 32 (req) *****************************************/
  108.     /* we generate note 960 as below */
  109.     /* Note 960: Violates MISRA Required Rule 32, */
  110.     /* should initialize either all enum members or only the first */
  111. /* Rule 33 (req) *****************************************/
  112.     /* we generate note 960 as below */
  113.     /* Note 960: Violates MISRA Required Rule 33,  */
  114.     /* side effects on right hand side of logical operator */
  115. /* Rule 34 (req) **************************************/
  116. /* Rule 35 (req) **************************************/
  117.     +e720                         /* Boolean test of assignment */
  118.     -append(720,[MISRA Rules 35 and 49])
  119.     +e820
  120.     -append(820,[MISRA Rule 35])
  121. /* Rule 36 (adv) ******************************************/
  122. /* Rule 37 (req) ****************************************/
  123.     +e701                        /* shift left of signed quantity */
  124.     +e702                        /* shift right of signed quantity */
  125.     -append(701,[MISRA Rule 37])
  126.     -append(702,[MISRA Rule 37])
  127. /* Rule 38 (req) ******************************************/
  128.     +e572                        /* excessive shift value */
  129.     -append(572,[MISRA Rule 38])
  130. /* Rule 39 (req) *****************************************/
  131.     +e501                        /* expected signed type */
  132.     -append(501,[MISRA Rule 39])
  133. /* Rule 40 (adv) ****************************************/
  134.     /* we generate note 961 as below */
  135.     /* Note 961: Violates MISRA Advisory Rule 40, */
  136.     /* 'sizeof' used on expressions with side effect */
  137. /* Rule 41 (adv) ********************************************/
  138. /* Rule 42 (req) ********************************************/
  139.     /* we generate note 960 as below */
  140.     /* Note 960: Violates MISRA Required Rule 42, */
  141.     /* comma operator used outside of 'for' expression */
  142. /* Rule 43 (req) ********************************************/
  143.     +e524                                                   /* loss of precision */
  144.     -append(524,[MISRA Rule 43])
  145.     +e653                                                   /* possible loss of fraction */
  146.     -append(653,[MISRA Rules 43 and 48])
  147. /* Rule 44 (adv) *******************************************/
  148.     /* we generate note 961 as below */
  149.     /* Note 961: Violates MISRA Advisory Rule 44, */
  150.     /* redundant explicit casting */
  151. /* Rule 45 (req) *****************************************/
  152.     +e923                        /* cast pointer/non-pointer */
  153.     -append(923,[MISRA Rule 45])
  154. /* Rule 46 (req) ****************************************/
  155.     +e564                       /* order of evaluation */
  156.     -append(564,[MISRA Rule 46])
  157. /* Rule 47 (adv) ****************************************/
  158.     /* we generate note 961 as below */
  159.     /* Note 961: Violates MISRA Advisory Rule 47, */
  160.     /* dependence placed on C's operator precedence */
  161. /* Rule 48 (adv) *****************************************/
  162.     +e912 /* implicit binary conversion */
  163.     /* +e653 implicit possible loss of fraction */
  164. /* Rule 49 (adv) ******************************************/
  165.     /* +e720 */
  166. /* Rule 50 (req) *****************************************/
  167.     +e777                        /* testing floats for equality */
  168.     -append(777,[MISRA Rule 50])
  169. /* Rule 51 (adv) ****************************************/
  170.     +e648                        /* overflow in computing constant */
  171.     -append(648,[MISRA Rule 51])
  172. /* Rule 52 (req) *******************************************/
  173.     +e527                       /* unreachable */
  174.     -append(527,[MISRA Rule 52])
  175.     +e506
  176.     -append(506,[MISRA Rule 52])
  177.     +e681
  178.     -append(681,[MISRA Rule 52])
  179.     +e827
  180.     -append(827,[MISRA Rule 52])
  181. /* Rule 53 (req) *****************************************/
  182.     +e505
  183.     +e522
  184.     -append(505,[MISRA Rule 53])
  185.     -append(522,[MISRA Rule 53])
  186. /* Rule 54 (req) ****************************************/
  187.     /* we generate note 960 as below */
  188.     /* Note 960: Violates MISRA Required Rule 54, */
  189.     /* null statement not in line by itself */
  190. /* Rule 55 (adv) ****************************************/
  191.     /* we generate note 961 as below */
  192.     /* Note 961: Violates MISRA Advisory Rule 55, */
  193.     /* non-case label */
  194. /* Rule 56 (req) ***************************************/
  195.     +e801
  196.     -append(801,[MISRA Rule 56])
  197. /* Rule 57 (req) ***************************************/
  198.     /* we generate note 960 as below */
  199.     /* Note 960: Violates MISRA Required Rule 57, */
  200.     /* continue statement detected */
  201. /* Rule 58 (req) ***************************************/
  202.     /* we generate note 960 as below */
  203.     /* Note 960: Violates MISRA Required Rule 58, */
  204.     /* non-switch break used */
  205. /* Rule 59 (req) ****************************************/
  206.     /* we generate note 960 as below */
  207.     /* Note 960: Violates MISRA Required Rule 59, */
  208.     /* left brace expected for if, else, for, do and while */
  209. /* Rule 60 (adv) ***************************************/
  210.     /* we generate note 961 as below */
  211.     /* Note 961: Violates MISRA Advisory Rule 60, */
  212.     /* no 'else' at end of 'if ... else if' chain */
  213. /* Rule 61 (req) **************************************/
  214.     +e616
  215.     -append(616,[MISRA Rule 61])
  216.     +e825
  217.     -append(825,[MISRA Rule 61])
  218. /* Rule 62 (req) *************************************/
  219.     +e744                         /* switch statement has no default */
  220.     -append(744,[MISRA Rule 62])
  221. /* Rule 63 (adv) **************************************/
  222.     /* we generate note 961 as below */
  223.     /* Note 961: Violates MISRA Advisory Rule 63, */
  224.     /* boolean value in switch statement */
  225. /* Rule 64 (req) *************************************/
  226.     +e764                         /* switch does not have a case */
  227.     -append(764,[MISRA Rule 64])
  228. /* Rule 65 (req) ************************************/
  229.     /* we generate note 960 as below */
  230.     /* Note 960: Violates MISRA Required Rule 65, */
  231.     /* floating point variable used as loop counter */
  232. /* Rule 66 (adv) *************************************/
  233. /* Rule 67 (adv) **************************************/
  234. /* Rule 68 (req) *************************************/
  235.     /* we generate note 960 as below */
  236.     /* Note 960: Violates MISRA Required Rule 68, */
  237.     /* function not declared at file scope */
  238. /* Rule 69 (req) ************************************/
  239.     /* we generate note 960 as below */
  240.     /* Note 960: Violates MISRA Required Rule 69, */
  241.     /* function has variable number of arguments */
  242. /* Rule 70 (req) ***************************************/
  243. /* Rule 71 (req) ***************************************/
  244.     /* +e718 symbol undeclared */
  245.     /* +e746 call not made in the presence of a prototype */
  246.     +e937                     /* old-style function declaration */
  247.     -append(937,[MISRA Rules 71 and 76])
  248.     +e957
  249.     -append(957,[MISRA Rule 71])
  250. /* Rule 72 (req) ***************************************/
  251.     +e18                          /* symbol redeclared */
  252.     -fvr                          /* varying return mode not allowed */
  253.     +e516                         /* argument type conflict */
  254.     +e532                         /* return mode of symbol inconsistent */
  255.     -append(18,[MISRA Rule 72])
  256.     -append(516,[MISRA Rule 72])
  257.     -append(532,[MISRA Rule 72])
  258. /* Rule 73 (req) **************************************/
  259.     /* we generate note 960 as below */
  260.     /* Note 960: Violates MISRA Required Rule 73, */
  261.     /* either all parameters or no parameters should have identifiers */
  262. /* Rule 74 (req) ***************************************/
  263. /* Rule 75 (req) ***************************************/
  264.     +e745                           /* function has no explicit type */
  265.     +e939                           /* return type defaults to int */
  266.     -append(745,[MISRA Rule 75])
  267.     -append(939,[MISRA Rule 75])
  268. /* Rule 76 (req) **************************************/
  269.     /* +e937 old-style function declaration */
  270. /* Rule 77 (req) **************************************/
  271.     +e747                       /* significant prototype coercion */
  272.     +e917                       /* prototype coercion */
  273.     +e918                       /* prototype coercion of pointers */
  274.     -append(747,[MISRA Rule 77])
  275.     -append(917,[MISRA Rule 77])
  276.     -append(918,[MISRA Rule 77])
  277. /* Rule 78 (req) ***************************************/
  278.     +e118               /* too few arguments for prototype */
  279.     +e119               /* too many arguments for prototype */
  280.     -append(118,[MISRA Rule 78])
  281.     -append(119,[MISRA Rule 78])
  282. /* Rule 79 (req) ****************************************/
  283.     +e82
  284.     -append(82,[MISRA Rules 79 and 84])
  285. /* Rule 80 (req) ***************************************/
  286.     +e144                       /* non-existent return value */
  287.     -append(144,[MISRA Rule 80])
  288. /* Rule 81 (adv) *****************************************/
  289. /* Rule 82 (adv) *****************************************/
  290. /* Rule 83 (req) *****************************************/
  291.     +e533                        /* function should return a value */
  292.     -append(533,[MISRA Rules 83 and 84])
  293. /* Rule 84 (req) ******************************************/
  294.     /* +e533 function should not return a value */
  295.     /* +e82 return <exp>; illegal with void function */
  296. /* Rule 85 (adv) ****************************************/
  297. /* Rule 86 (adv) ******************************************/
  298. /* Rule 87 (req) ****************************************/
  299.     /* we generate note 960 as below */
  300.     /* Note 960: Violates MISRA Required Rule 87, */
  301.     /* only preprocessor statements and comments before '#include' */
  302. /* Rule 88 (req) ****************************************/
  303.     /* we generate note 960 as below */
  304.     /* Note 960: Violates MISRA Required Rule 88, */
  305.     /* header file name with non-standard character */
  306. /* Rule 89 (req) ***************************************/
  307.     +e12                        /* Need < or  " after #include */
  308.     -append(12,[MISRA Rule 89])
  309. /* Rule 90 (req) ***************************************/
  310. /* Rule 91 (req) ****************************************/
  311.     /* we generate note 960 as below */
  312.     /* Note 960: Violates MISRA Required Rule 91, */
  313.     /* '#define/#undef' used within a block */
  314. /* Rule 92 (adv) *****************************************/
  315.     /* we generate note 961 as below */
  316.     /* Note 961: Violates MISRA Advisory Rule 92, */
  317.     /* use of '#undef' is discouraged */
  318. /* Rule 93 (adv) ******************************************/
  319. /* Rule 94 (req) **************************************/
  320.     +e131                         /* syntax error in call of macro */
  321.     -append(131,[MISRA Rule 94])
  322. /* Rule 95 (req) ****************************************/
  323.     +e436
  324.     -append(436,[MISRA Rule 95])
  325. /* Rule 96 (req) ***************************************/
  326.     +e773                      /* expression-like macro not parenthesized */
  327.     -append(773,[MISRA Rule 96])
  328. /* Rule 97 (adv) ******************************************/
  329.     +e553                        /* undefined preprocessor variable */
  330.     -append(553,[MISRA Rule 97])
  331. /* Rule 98 (req) ********************************************/
  332.     /* we generate note 960 as below */
  333.     /* Note 960: Violates MISRA Required Rule 98, */
  334.     /* multiple use of '#/##' operators in macro definition */
  335. /* Rule 99 (req) ******************************************/
  336. /* Rule 100 (req) ***************************************/
  337.     /* we generate note 960 as below */
  338.     /* Note 960: Violates MISRA Required Rule 100, */
  339.     /* non-standard use of 'defined' preprocessor statement */
  340. /* Rule 101 (adv) *******************************************/
  341. /* Rule 102 (adv) ****************************************/
  342. /* Rule 103 (req) **************************************/
  343.     +e946          /* relational or subtract operator applied to pointers */
  344.     -append(946,[MISRA Rule 103])
  345. /* Rule 104 (req) *************************************/
  346. /* Rule 105 (req) *************************************/
  347. /* Rule 106 (req) *****************************************/
  348.     +e733               /* assigning address of auto to outer scope symbol */
  349.     +e789               /* assigning address of auto to static */
  350.     -append(733,[MISRA Rule 106])
  351.     -append(789,[MISRA Rule 106])
  352. /* Rule 107 (req) ****************************************/
  353.     +e413
  354.     +e613
  355.     +e794
  356.     -append(413,[MISRA Rule 107])
  357.     -append(613,[MISRA Rule 107])
  358.     -append(794,[MISRA Rule 107])
  359. /* Rule 108 (req) *******************************************/
  360.     +e43                         /* vacuous type for variable */
  361.     -append(43,[Misra Rule 108])
  362. /* Rule 109 (req) ******************************************/
  363. /* Rule 110 (req) **************************************/
  364.     /* we generate note 960 as below */
  365.     /* Note 960: Violates MISRA Required Rule 110, */
  366.     /* bitfields inside union */
  367. /* Rule 111 (req) ****************************************/
  368.     +e46                        /* field type should be int */
  369.     -append(46,[Misra Rule 111])
  370. /* Rule 112 (req) *****************************************/
  371.     +e806               /* small bit field is signed rather than unsigned */
  372.     -append(806,[Misra Rule 112])
  373. /* Rule 113 (req) *****************************************/
  374. /* Rule 114 (req) ******************************************/
  375.     +e683             /* complain about #define standard functions */           
  376.     -append(683,[Misra Rule 114])           
  377. /* Rule 115 (req) ******************************************/
  378. /* Rule 116 (req) *****************************************/
  379. /* Rule 117 (req) ********************************************/
  380.     /* 100 calls to standard library functions are monitored */
  381.     /* users can specify additional constraints for other functions */
  382. /* Rule 118 (req) *****************************************/
  383.     -function(gets,calloc,malloc,realloc,free)
  384. -append(421(calloc), [MISRA Rule 118])
  385.     -append(421(malloc), [MISRA Rule 118])
  386. -append(421(realloc), [MISRA Rule 118])
  387. -append(421(free), [MISRA Rule 118])
  388. /* enable message 421 for these functions */
  389. /* Rule 119 (req) ****************************************/
  390.     +derrno=errno_violates_MISRA_Rule_119
  391. /* Rule 120 (req) ******************************************/
  392.     +doffsetof=offsetof_violates_MISRA_Rule_120
  393. /* Rule 121 (req) *******************************************/
  394.     -headerwarn(locale.h)
  395. /* enable message 829 for locale.h */
  396. -append(829(locale.h), [MISRA Rule 121])
  397.     -function(gets,setlocale,localeconv)
  398. -append(421(setlocale), [MISRA Rule 121])
  399. -append(421(localeconv), [MISRA Rule 121])
  400. /* enable message 421 for these functions */
  401. /* Rule 122 (req) *********************************************/
  402.     -function(gets,longjmp,setjmp)
  403. -append(421(longjmp), [MISRA Rule 122])
  404. -append(421(setjmp), [MISRA Rule 122])
  405. /* enable message 421 for these functions */
  406. /* Rule 123 (req) *******************************************/
  407.     -function(gets, signal, raise)           
  408. -append(421(signal), [MISRA Rule 123])
  409. -append(421(raise), [MISRA Rule 123])
  410. /* enable message 421 for these functions */
  411. /* Rule 124 (req) ******************************************/
  412.     -headerwarn(stdio.h)
  413. /* enable message 829 for stdio.h */
  414. -append(829(stdio.h), [MISRA Rule 124])
  415. /* Rule 125 (req) ******************************************/
  416.     -function(gets,atof,atoi,atol)    
  417. -append(421(atof), [MISRA Rule 125])       
  418. -append(421(atoi), [MISRA Rule 125])
  419. -append(421(atol), [MISRA Rule 125])
  420. /* enable message 421 for these functions */
  421. /* Rule 126 (req) ******************************************/
  422.     -function(gets,abort,exit,getenv,system)           
  423. -append(421(abort), [MISRA Rule 126])
  424. -append(421(exit), [MISRA Rule 126])
  425. -append(421(getenv), [MISRA Rule 126])
  426. -append(421(system), [MISRA Rule 126])
  427. /* enable message 421 for these functions */
  428. /* Rule 127 (req) *******************************************/
  429.     -function(gets,time,strftime,clock,difftime,mktime)           
  430. -append(421(time), [MISRA Rule 127])
  431. -append(421(strftime), [MISRA Rule 127])
  432. -append(421(clock), [MISRA Rule 127])
  433. -append(421(difftime), [MISRA Rule 127])
  434. -append(421(mktime), [MISRA Rule 127])
  435. /* enable message 421 for these functions */