home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / runtime / dos / compiler / splint.vim < prev    next >
Encoding:
Text File  |  2010-08-14  |  2.3 KB  |  72 lines

  1. " Vim compiler file
  2. " Compiler:     splint/lclint (C source code checker)
  3. " Maintainer:   Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
  4. " Splint Home:    http://www.splint.org/
  5. " Last Change:  2005 Apr 21
  6. " $Revision: 1.3 $
  7.  
  8. if exists("current_compiler")
  9.   finish
  10. endif
  11. let current_compiler = "splint"
  12.  
  13. if exists(":CompilerSet") != 2        " older Vim always used :setlocal
  14.   command -nargs=* CompilerSet setlocal <args>
  15. endif
  16.  
  17. let s:cpo_save = &cpo
  18. set cpo-=C
  19.  
  20. " adapt this if you want to check more than one file at a time.
  21. " put command line options in .splintrc or ~/.splintrc
  22. CompilerSet makeprg=splint\ %
  23.  
  24. " Note: when using the new array bounds checking flags:  Each warning
  25. " usually has several lines and several references to source code mostly
  26. " within one or two lines (see sample warning below).  The easiest way
  27. " not to mess up file name detection and not to jump to all positions is
  28. " to add something like
  29. "    -linelen 500 +boundscompacterrormessages
  30. " to your .splintrc and 'set cmdheight=4' or more.
  31. " TODO: reliable way to distinguish file names and constraints.
  32. "
  33. " sample warning (generic):
  34. "
  35. "foo.c:1006:12: Clauses exit with var referencing local storage in one
  36. "               case, fresh storage in other case
  37. "   foo.c:1003:2: Fresh storage var allocated
  38. "
  39. " sample warning (bounds checking):
  40. "
  41. "bounds.c: (in function updateEnv)
  42. "bounds.c:10:5: Possible out-of-bounds store:
  43. "    strcpy(str, tmp)
  44. "    Unable to resolve constraint:
  45. "    requires maxSet(str @ bounds.c:10:13) >= maxRead(getenv("MYENV") @
  46. "    bounds.c:6:9)
  47. "     needed to satisfy precondition:
  48. "    requires maxSet(str @ bounds.c:10:13) >= maxRead(tmp @ bounds.c:10:18)
  49. "     derived from strcpy precondition: requires maxSet(<parameter 1>) >=
  50. "    maxRead(<parameter 2>)
  51. "  A memory write may write to an address beyond the allocated buffer. (Use
  52. "  -boundswrite to inhibit warning)
  53.  
  54. CompilerSet errorformat=%OLCLint*m,
  55.     \%OSplint*m,
  56.     \%f(%l\\,%c):\ %m,
  57.     \%*[\ ]%f:%l:%c:\ %m,
  58.     \%*[\ ]%f:%l:\ %m,
  59.     \%*[^\"]\"%f\"%*\\D%l:\ %m,
  60.     \\"%f\"%*\\D%l:\ %m,
  61.     \%A%f:%l:%c:\ %m,
  62.     \%A%f:%l:%m,
  63.     \\"%f\"\\,
  64.     \\ line\ %l%*\\D%c%*[^\ ]\ %m,
  65.     \%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
  66.     \%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
  67.     \%DMaking\ %*\\a\ in\ %f,
  68.     \%C\ %#%m
  69.  
  70. let &cpo = s:cpo_save
  71. unlet s:cpo_save
  72.