I currently develop embedded systems using a number of different compilers, the most common coming from IAR systems.

My love of hardware is what drives doing embedded systems and firmware. I however seem to lack quite a bit in software engineering.

I have read many times that a good Lint is invaluable for code. I would like to know if anyone on here uses a Lint, which Lint it is, and how much it helps in detecting errors.


I have used lint in the past, and I have found it useful. However, I had to stop using it as I moved onto a larger project that wasn't using it. That made it difficult to use lint, because of how interconnected the code was. The biggest problem with lint is configuring it to remove false positives and don't cares. It may be better now that they've done another release in the past year.

One company I work with has taken that large project and put it through Coverity's static analzyer. However, that's a big chunk of money to be using, so it's not recommended for small companies.

| improve this answer | |
  • \$\begingroup\$ I read a I have to expect to spend up front time to get it to stop throwing false positives. What lint had you chosen to use at the time? \$\endgroup\$ – Kortuk Jun 2 '10 at 19:30
  • \$\begingroup\$ At the time it was version 8.0. \$\endgroup\$ – Jay Atkinson Jun 3 '10 at 4:52
  • \$\begingroup\$ Do you know what company made it, there are many different Lint programs out there. I was told it is named lint because of the little pieces of lint it finds that the compiler misses. \$\endgroup\$ – Kortuk Jun 3 '10 at 14:57
  • 1
    \$\begingroup\$ Sorry, Gimpel's PC-LINT. What's nice is that they at least help you tame the output some with some predefined rule sets based on the compiler and editor you use. They're available for download at their site: gimpel.com \$\endgroup\$ – Jay Atkinson Jun 3 '10 at 17:06
  • \$\begingroup\$ If your new source code base is spitting out a lot of "false positives" it's sadly, usually broken. \$\endgroup\$ – Tim Williscroft Nov 3 '10 at 4:30

I haven't used lint, but I find that GCC's warnings can detect a lot of programming errors.

Here's my preferred CFLAGS

CFLAGS += -Werror -W -Wall -ansi -pedantic -Wformat-nonliteral -Wcast-align -Wpointer-arith -Wbad-function-cast -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Winline -Wundef -Wnested-externs -Wshadow -Wconversion -Wwrite-strings -Wno-conversion -Wextra -Wstrict-aliasing -Wcast-qual

I've also had a go with Linus Torvalds' Sparse for static analysis. But, I think these kind of tools are more useful for big systems.

| improve this answer | |
  • \$\begingroup\$ most of the systems I work with are in the 50k lines of code range. \$\endgroup\$ – Kortuk Jun 2 '10 at 16:35

I must admit, I haven't had much use with a lint of some sort on a microcontroller/microprocessor project.

On my current embedded project, which uses C++ on a Linux-based PC/104 SBC, we've used cppcheck (works with C too!). It works pretty well, although it has issues with complicated class inheritance trees. And it has provided some value - it's good for checking for potential locations where memory leaks could occur. But most of the things it noted were stylistic - use preincrement instead of postincrement in for-loops, that sort of thing.

I also used an online lint for Javascript when developing applications for an enterprise software system. It was absolutely invaluable there, as there were no debugging tools to check for syntax errors in that setup.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.