Gimpel Software
  Order        Patches        Discussion Forum        Blog 
Contact      Site Map       
   Bug of the Month
   Interactive Demo
NOTE: Although some of these reviews refer specifically to PC-lint or FlexeLint, the functionality of the two products is identical.

Reviews and Awards

Like all good tools, PC-lint provides ways to easily disable any of its checks that you donít consider valuable. So donít be put off if a small number of the checks PC-lint performs are not to your liking.

PC-lint is exceptionally good at identifying unused fields and variables. Before you think the Microsoft tools identify unused variables sufficiently well, consider that Visual Studio with /W4 only catches unused local variables. If you have an unused static variable, global variable or structure member, neither the MS VC compiler nor PREfast will flag them; But PC-lint will identify them for you. In many cases I find that an unreferenced variable means that a piece of code is missing. There had to be a reason you declared the item in the first place, right? So what was it?

Another area that PC-lint checks is compatibility of variables in expressions. A number of these can show up as integer overflow or underflow problems and lead to security holes or crashes. The Microsoft tools do some of this, but PC-lint is outstanding in finding potential problems such as mixing signed and unsigned variables in the same expression. PC-lint applies a stricter set of tests for loss of precision and loss of sign than Microsoft does.

        Don Burn, " Guest Article - Another Look at Lint",   The NT Insider (Page 12), March-April 2013

Fortunately, one great version of lint is still available today for all platforms. That is PC-lint from Gimpel Software. The Unix version is called FlexeLint. At $239 per seat. PC-lint is the best bargain in software development tools this side of open source. It catches just about all suspicious C and C++ code. After you've configured it to fit your style, it delivers jewels.

For this review, I prepared a small C file with obvious bugs in it and asked each vendor to run it at the most sensitive bug-sniffing levels. Coverity, due to its detection philosophy, found zero; Klocwork found five. PC-lint generated 15 warnings. Here, however, is the critical difference. Only PC-lint correctly identified a miscoded function call. All vendors agreed this call could generate a null-pointer exception, which is a showstopper in C and C++ and a specific target of the reviewed suites.

Lint is particularly useful for locating a bug in code that compiles correctly -- syntactically correct code that does not behave as expected almost always has an error that lint will catch.

        Andrew Binstock, "Lint traps bugs at compile time",   InfoWorld, January 30, 2006

ALOA (short for A Lint Output Analyzer) is a tool that processes output generated by PC-lint and computes various useful metrics that give a quick overview of the internal quality of any C/C++ project.  Furthermore, it shows which kind of Lint issues are most frequently encountered and highlights issue-laden modules.  The metrics produced by ALOA are useful for tracking a project's lint compliance and for fine-tuning Lint policies.
ALOA is a simple yet powerful tool, particularly for introducing PC-lint to ongoing C/C++ projects.  It quickly gives an overview of all encountered Lint issues, helps monitor a project's Lint quality over the course of time, and pinpoints troublesome modules.

I have successfully used ALOA on various projects, ranging from extremely resource-constrained embedded systems to GUI-based desktop systems.  In all cases, PC-lint and ALOA have jointly helped reducing development costs.

        Ralf Holly, "Lint Metrics & ALOA",  C/C++ Users Journal, June 2004

On my current project the uninitialized value was often valid because a fluke of the memory map meant that the location of x was the same on each call and that the variable picked up the value of x from the previous call. So every time I examined x with the debugger, it looked reasonable. Thus the worst value for an uninitialized variable to take is the correct value, since that's the value that makes the bug hardest to spot.

While your compiler is unlikely to warn you when some paths fail to initialize the value, the PC-lint tool from Gimpel Software will. This particular warning has saved my skin a couple of times. PC-lint can output an avalanche of warnings, however, making it difficult to assess which ones represent real bugs and which are identifying bad style. When this happens I do a quick search for certain warnings. The warning of uninitialized values almost always represents a real problem in the code.

          Niall Murphy, "Start me up",   Embedded Systems Programming,  April 2004

Lint is a program that examines the source code and identifies suspicious areas. It's like a compiler's syntax checker on steroids. Only Lint is smart enough to watch variable and function usage across multiple files. Compilers can't do that. For a fraction of the cost, aggressive Lint usage picks out many problems before debugging starts. Lint all source files before doing code inspections.

Gimpel sells one for $239. It's up to you to buy it and to ensure your engineers use it on all new code. Lint is annoying at first, often initially zeroing in on constructs that are indeed fine. Don't let that quirk turn your people off. Tame it, and then reap great reductions in debugging times.

Debugging eats 50% of most projects' schedules. The average developer has a 5 to 10% error rate. Anything that trims that rate even a smidgen saves big bucks.

          Jack Ganssle, "Firmware basics for the boss, part 2",  Embedded Systems Programming,  March 2004

I've used PC-lint on projects ranging from 100,000 to 200,000 lines of C++ source code and have always run across bugs that otherwise would have been extremely hard to find and fix.

I present a report generator that reads in all the PC-lint messages generated from all the files in the project, and then displays them organized into user-specified categories.  This gives you an overview of the state of the project, and helps you decide which are the most important messages to deal with first.  It also encourages the use of PC-lint for project management.( See pclint.txt and )

            Jon Zyzyck, "A Report Generator for PC-lint", Dr. Dobb's Journal, Feb. 2003

Static source-code analysis tools explore your source code, hunting for bugs, somewhat like an automated code inspection.  Lint is one of the oldest and most valuable static source-code analysis tools for C software  The principle difficulty here is that lint churns out volumes of output, and only a small subset of this output reflects real errors.  To combat this verbosity, I purchased FlexeLint from Gimpel Software because this version of lint can suppress specific warnings and operates well on C++ source code.  After a few weeks of experimenting, I crafted a set of lint rules with an extremely good signal-to-noise ratio.  Running lint in this fashion quickly yielded 1843 defects.  The first lint configuration file presents a list of lint rules that are good at identifying real defects.

This configuration file is intended to help with manual code inspections by identifying common C++ coding errors, potential memory leaks, and common coding standards violations.  The second lint configuration file is a subset of the previous file; this file checks for blatant and serious errors.  The second lint configuration file should produce a clean run on any code that is submitted into the source-code repository.  These configuration files do not use the full power of lint since some legitimate errors are suppressed in favor of producing high signal-to-noise output.  This technique works by asking lint to suppress all warnings, then only turning on the select few that you are scanning for.
I recommend performing a selective static analysis (using a properly configured lint or equivalent) since it offers the biggest bang in the shortest time period.

            Kevin Smith, "Automated Defect Identification" Dr. Dobb's Journal, Feb. 2003 

The first thing that needs to be stated is that PC-lint is a far cry from the lint of days gone by.  Under Gimpel's direction, PC-lint has evolved into a powerful static analysis tool focused on the C and C++ languages
To my surprise the error wasn't what I had expected at all.  In fact, PC-lint found a case where I'd been bitten with a cut and paste bug, and actually could dereference a NULL pointer.  Ooops.  In fact, I found this same bug (in the, ahem, same code sequence) in two different places.  Well done, PC-lint!  I must remember to log a bug against myself for this.
PC-lint also found a couple of solid cases in the drivers we tested where there was a path through a complicated function that could result in the function trying to return the value from an uninitialized variable.  
Checking the code I discovered that the variable in question ("ntStatus") held the return value for the function.  This is clearly a nasty error, and PC-lint found it.  In fact, PC-lint found a couple of these during our tests, as well as a couple of cases where a potentially uninitialized variable was being tested in if statements.
The reason we all, including you, are grateful to Udo [Eberhardt] is that he has taken the time to send us a nice clean, set of control and configuration files for running PC-lint on Windows drivers.  He has even zipped up these files with some comments and a sample driver to demonstrate PC-lint's use on a real project.

        "All About Lint -- PC-lint and Windows Drivers"  The NT Insider,  Sept-Oct 2002

Gimpel PC-lint 8.00 (Lint) is arguably one of the most powerful, and yet daunting tools for C/C++ programmers. ... The latest version of Lint doesn't disappoint, adding nearly 90 new messages and 40 enhanced messages and options to the range of information supplied. ... If you don't have Lint, get it today.

   Herb Marselas, Game Developer Magazine -- See page 10 in the Jan. 2002 archives.

Gimpel Software's PC-lint 8.00 is a powerful tool in a small wrapper that helps you locate elusive bugs in your C++ code. PC-lint can track down a large number of syntactic and semantic errors in your code that may escape the attention of your compiler and linker.... PC-lint is a great tool to have in your toolbox. You can use it early in development to smooth out your code's rough edges, or you can use it to maintain legacy code by tracking down bugs that others left behind.  This simple yet effective tool can be just the thing to brush the "lint" off your product.

            Brian Noyes, Visual Studio Magazine, Nov. 2001

This product (PC-lint) has a huge user base and is very stable. It's a small price for such fantastic diagnostic information, particularly in the embedded world, where compilers may cost thousands of dollars.

            Jack G. Ganssle, Embedded Systems Programming, April 2001

This little gem is a source code analyzer that finds everything that is wrong with your code.... PC-lint is the samurai sword of development tools.... As a time saving tool, nothing beats PC-lint. If you're hunting for bugs, or trying to improve the quality of code to prevent bugs from happening in the first place, PC-lint is the tool to have. It not only does its job well, it does it far better than any other tool in its class.

  Mike Kelleghan, Game Developer Magazine -- See page 13 in the Jan. 2001 archives.

[ award ] The Front Line Awards honor a wide range of tools that help development teams of interactive entertainment titles to create and innovate," said Mark DeLoura, editor-in-chief, Game Developer magazine. There are so many amazingly powerful tools for game developers -- it was difficult to narrow it down. ...   In addition to the Front Line Award category winners, each year one product is inducted into the Front Line Awards Hall of Fame. The inductee is chosen for its outstanding contribution to the game development industry. This year's honor was presented to Gimpel Software's PC-lint. PC-lint is a tool for programmers which enables them to search for thousands of types of common errors in their game's C and C++ source code. Even after a decade of availability, PC-lint continues to be the tool of choice to verify cross-platform compatibility and source code validity with the highest standards.

     Game Developer Magazine Press Release, Dec. 11, 2000,

Many software companies run their code through PC-lint before it gets anywhere near the compiler, and find that they get a huge cost saving because subsequent time spent debugging code is greatly reduced.

           Dave Jewell, PC Plus, August 2000

PC-lint is a refreshing change, being a utility program which is genuinely useful, doesn't cost the earth, and doesn't take up all your free disk space. It is going to be a very valuable tool for anyone who is concerned about code quality .... Highly recommended!

            Julian Templeman, Developer's Review U.K., June 2000

From Apollo to Chernobyl -- PC-lint, a tool that increases the reliability & integrity of 'C' programs.

            Chris Tapp, Hitex, Summer 1999

PC-lint V.7.50 from Gimpel Software is an indispensable tool that finds all kinds of hard-to-find nits in your source code that compilers miss. All of my framework code has been subject to Lint's scrutiny.

            Richard Russell, " Embedded Development Tools " Circuit Cellar Ink, March 1999

To find the code bugs before someone else does, we use a combination of Gimpel's PC-lint and code reviews. PC-lint rummages through the code and checks it against thousands of possible error types. This can produce much white noise, but PC-lint lets you have a set of common message suppression flags that represent your policy of lint-acceptable code. Table 1 lists our policy. On most projects, we mandate that the final shipped code must pass PC-lint with no warnings or errors. In fact, PC-lint has more than paid for itself in the time savings of tracking down bugs due to uninitialized pointers.

            Wes Faler,"Building Solid Code" Dr. Dobb's Journal, November 1998

 I would strongly recommend it [PC-lint] for use with C and C++ programming, since it will uncover much dubious or outright incorrect code that many other tools will miss."

            Ron van der Wal, "Testing Testers" Dr. Dobb's Journal, Feb. 1997

PC-lint  is a power tool that just about every C and C++ programmer should have. Its ability to find subtle semantic and syntactic errors will save you time and make your programs more robust.... When I want my code to be well-groomed -- and I always do -- I'll have PC-lint check it out first.

            Noah Davids, "Neatness Counts" Windows Tech Journal, Sept. 1996

The leader in this field is PC-lint for C/C++ from Gimpel Software. I've been using this tool for years and have found it to be indispensable.... I'd be surprised if it didn't pay for itself in the first week.  It either will find dormant bugs and potential porting problems or will reassure you your code is clean; either way, you can rest easier.

            Rex Jaeschke, "When Filename Truncation Isn't" ent, May 1996

The whole FlexeLint package radiates a thoroughness of design that is difficult to find in many tools today. But underlying this design is an attribute that is generally found in inverse proportion to a product's flexibility and thoroughness: simplicity.... Highly recommended.

            Andrew Binstock, editor-in-chief, UNIX Review, August 1995

I highly recommend PC-lint for C and C++ programmers at all skill levels. It tirelessly inspects every line of your source code and reports an enormous number of warnings and error messages for potentially ill-behaved lines.

            Gregory Bergmann, "The Ultimate Insecticide" Computer, Feb. 1995

I consider PC-lint an important part of my C education and recommend it without reservation to the serious C programmer.

            Mike Maddox, Unisys World, June 1994

I'm happy to say that PC-lint for C/C++ will further Gimpel's long-standing reputation for quality. PC-lint for C/C++ is a thorough, configurable, accurate, and capable lint for C++.

            Larry O'Brien, Software Development, June 1994

PC-lint for C/C++ has earned a permanent place in my toolbox. This inexpensive utility does its job very well and is adaptable to almost any compiler. PC-lint can help you find bugs you'd probably never discover otherwise.

            Mark Davidson, Windows Tech Journal, May 1994

PC-lint is a complex and versatile program with more than a hundred options and several hundred messages.... Once configured, PC-lint requires little additional information, and it will unearth oddities, idiosyncrasies, and bugs in your source code that no other program can find.

            Rex Conn, "Syntax Checkers" PC Magazine, March 16, 1993

PC-lint is a solid product, and if you make your living developing C code, it's a worthwhile investment. If it catches just one bug that otherwise would have slipped through, it can pay for itself.

            Bruce Graves, PC Techniques, Feb/March 1993

With these products, Gimpel Software continues its tradition of delivering topnotch software at reasonable prices.... PC-lint 386 is an electrifying product.... If you need a lint-like tool, PC-lint is a good choice.... (About C-Vision): Gimpel Software once again stands out with a fantastic new product that does an outstanding job and, unlike many of the other systems, doesn't break.

            Dave Shaver, Computer Language, Aug. 1992

Your algorithms look solid, the compiler chews through your source without a hiccup, yet your output looks like a passage of Finnegan's Wake that's been run through a Cuisinart.  What I do in this situation is tell the boss it's a hardware bug and reach for the PC-lint.  PC-lint helps locate "roach motel" variables and code fragments -- the ones that check in but don't check out.  And PC-lint offers something akin to the strong type-checking we never missed in C until C++ came along. ... Lint early, lint often and fight the impulse to get defensive and say "Yeah but it kinda works the way it is"  

            MGM, Computer Language, April  1991

FlexeLint worked, and worked very well. It caught things our other lint programs didn't, and offers considerably more flexibility than any other lint on the market. It is a superbly crafted program, and we cannot think of any improvements to the software we would wish for  ...  We can unhesitatingly recommend FlexeLint for anyone who programs in C. Those who craft large projects, or those with multiple person teams will wonder why it took so long to find this utility. FlexeLint, although not inexpensive, is definitely worth the investment for serious programmers. We have used PC-lint for years now, and FlexeLint takes Gimpel's excellent product to new levels.

            Tim Parker, Unique, Dec. 1990

PC-lint,the one tool I believe all C programmers should have.

            Billy Rubin, The C Gazette, Autumn 1989

PC-lint from Gimpel Software, Collegeville, Penn., is a very impressive tool indeed. In addition to training novices in good C programming practices, PC-lint also serves as a great aid to veteran programmers slogging their way through a multimodule project.

            David Burnette, Computer Language, February 1989

PC-lint does its job well and belongs in the C programmer's toolbox.

            Alex Lane, BYTE magazine, November 1988

Lint is extremely powerful and flexible. It made writing C code easier and greatly reduced debugging time. All in all, I highly recommend Gimpel's Lint to ALL Amiga C programmers.

            Gary Sjogren, Amiga Friends Newsletter, October 1988

PC-lint would be a wise investment for the novice and the professional C programmer. Overall Rating: A

            George O’Neal Keyes, Book of IBM Software, 4/18/86

Home | Contact | Order

PC-lint Plus, PC-lint and FlexeLint are trademarks of Gimpel Software LLC
Copyright © 2018, Gimpel Software LLC, All rights reserved.