Click here to Skip to main content
15,892,222 members
Articles / Desktop Programming / MFC

LintProject - Improving the Usability of PC-Lint with Visual C++ Solutions and Projects

,
Rate me:
Please Sign up or sign in to vote.
4.83/5 (36 votes)
29 Jan 2009CPOL13 min read 280.8K   1.7K   52  
Utility to run PC-Lint on Visual C++ solutions and projects, generating XML and HTML reports of the results.
LintProject 1.4.1.13 (26th January, 2009)

1.  Modifications to support $(PlatformName) with VS2002 onwards. Our thanks
    to Alex McCarthy for contributing these changes.



LintProject 1.4.1.12 (23rd October, 2008)

1.  LintProject now returns an error code of 1 in the event of an error in the 
    command line. Our thanks to Brett Rowbotham for contributing this change.
    
2.  The elapsed time value in project reports now shows hours as well as minutes
    and seconds (preventing an incorrect elapsed time from being reported for
    projects which take over an hour to analyse). Our thanks to Brett Rowbotham
    for contributing this change.

3.  Removed the (no longer in existance) LintProject.h from the project files.



LintProject 1.4.1.11 (21st October, 2008)

1.  Updated the MSXML import in stdafx.h from msxml2.dll to msxml4.dll and added
    the named_guids qualifier.

2.  Modifications to support $(SolutionDir) and $(ProjectName). Our thanks to
    Alex McCarthy for contributing these changes.

3.  Removed a redundant declaration in CFileLintAnalyser

4.  Removed the unused LintProject.h

5.  Changed LintProject.zip to LintProject_1.4.zip in MakeZip.bat



LintProject 1.4.0.10 (29th April, 2008)

1.  Corrected a bug in the generation of analysis command lines.

2.  Added the application version to generated reports.



LintProject 1.4.0.9 (9th April, 2008)

1.  Solution and project specific environment variables $(SolutionDir), $(ProjectDir),
    $(InputDir) and $(ConfigurationName) are now set during analysis. Our thanks to
    Andrej Pohlmann for contributing the code to implement this feature.

2.  If a file of the form <project filename>.options.lnt is found in the project folder,
    it will now be used in the analysis command line. Our thanks to Andrej Pohlmann for
    contributing the code to implement this feature.
    
3.  Corrected a potential buffer overflow in the loading of XSL stylesheets (thanks to
    Mark Ridgwell for identifying this).

4.  Fixed a potential COM exception in Utils::RefreshAllOpenBrowserWindows().

5.  Corrected a bug in the parsing of intermediate file folders within Visual C++ projects.

6.  Minor corrections to analysis command lines.

7.  Visual C++ 6.0 project (.dsp) files containing only one project configuration are now
    parsed correctly.
    
8.  Moved CSplitPath and CModuleVersion into the Riverblade::Libraries::Utils namespace.

9.  Fixed minor lint issues.

10. The code is now released under the Code Project Open Licence (CPOL) v1.0; file
    banners have been updated accordingly.



LintProject 1.4.0.8 (9th February, 2008)

1.  Removed all MFC dependencies. LintProject now uses ATL 7 directly, and in consequence,
    the source now requires Visual Studio .NET 2002 or later to compile (project files
    are supplied for Visual Studio .NET 2003 and Visual Studio 2008, but porting to
    other versions should be straightforward).
    
2.  Added support for eMbedded Visual C++ 4.0 workspaces and projects.

3.  Added error checking for solution/project configurations. Attempting to analyse an
    invalid configuration will now cause an error to be generated.
    
4.  Project intermediate folder specifications containing "$(ConfigurationName)" will
    now be expanded correctly on the PC-Lint command line (VS2002 onwards).

5.  Reinstated a missing -u option in the analysis command line.

6.  Added a "/exclude" parameter to allow specified projects to be excluded from analysis
    (our thanks to Andrej Pohlmann for contributing the code to implement this).

7.  Integrated the solution and project file parsers from Visual Lint, along with various
    utility functions.
    
8.  Converted the build to Unicode.



LintProject 1.3.1.7 (26th June, 2007)

1.  Added /configfile switch to allow the filename of the std.lnt file to be specified.

2.  Incorporated customer requested fixes and corrections.

3.  Started removing MFC specific code

4.  Fixed most outstanding lint issues.



LintProject 1.3.0.6 (12th February, 2006)

1.  Added support for VS.NET solution configurations. The solution configuration can now be specified
    directly, with the corresponding configuration for each project being selected automatically.
    
2.  Added the /cfg? parameter to allow the available configurations to be queried at either solution
    or project level.
    
3.  CSolutionLintAnalyser and CProjectLintAnalyser now only attempt to refresh browser windows if the
    /s parameter is specified. This prevents problems when the utility is run as a service.

    

LintProject 1.3.0.5 (21st April, 2005)

1.  Added the +linebuf parameter to the command line used to generate project.lnt files. This increases
    the line width which PC-Lint will use when scanning the project file, and makes it more likely to
    work correctly with complex projects such as AnkhSVN.
    
2.  Transposed the std.lnt and project.lnt location in the command line used to analyse a file. This
    should ensure that project specific include settings override the system defaults.
    
3.  Project configurations can now be specified. If not specified, Lintproject will attempt to use the
    debug configuration by default.

4.  The source now compiles with either VC6 or VS.NET 2003.

5.  User specified parameters can now be passed to the project.lnt file generation process as well as
    during analysis.



LintProject 1.2.4 (24th February, 2005)

1.  CSolutionLintAnalyser::Analyse() and CProjectLintAnalyser::Analyse() now use SHCreateDirectoryEx()
    instead of mkdir() to create folders for analysis results so that recursive folders are
    automatically created.

2.  Fix to UNC path checking suggested by coghlans@technologist.com on the LintProject CP forum.

3.  Improved handling of relative pathnames. Analysis and source files no longer need reside on the
    same logical drive.

4.  Added support for passing parameters directly to lint-nt.exe via a new command line option (/l"<params>")

5.  If a warning count of 255 is returned from lint-nt.exe. CFileLintAnalyser::Analyse() will now
    parse the results file to try to retrieve the true warning count.

6.  Reimplemented the FileExists() helper function.

7.  Added solution to source code control.

 

LintProject 1.2.3 (13th October, 2004)

 -  Modifications to allow operation on systems where PC-Lint is installed in a pathname containing
    spaces (e.g. C:\Program Files\Lint)



LintProject 1.2.2 (10th October, 2004; published on codeproject.com 11th October 2004)

1.  Removed a couple of unnecessary includes

2.  Replaced MSXML4 with MSXML3 (MSXML4 isn't installed by default on XP, but MSXML3 is).

3.  Added checks to ensure that MSXML3 and lint-nt.exe are available before attempting to proceed
    with the analysis.

4.  LintProject now uses env-vc7.lnt with VC7 projects instead of env-vc6.lnt.

5.  Added a workaround for the duplicated carriage return bug in the XSLT generated HTML output.

6.  Temporarily removed "the mark of the web" (needd for XP SP2) from generated analysis reports
    as it seems to be causing more problems than it solves...

7.  Added MakeZip.bat to provide a convenient way to create a zipfile of the source.

8   Added company details to intro banner and reports.

9.  Added start time to reports.

10. Improved support for "Pending" and "In Progress" analysis.

11. Fixed a handful of compiler warnings.

12. Enabled incremental linking in debug builds.

13. Added code to refresh all open browsers with any open lintproject output window.

14. Added support for /s (show results) option.

15. Solution results files are now updated as each file within a project is analysed.



LintProject 1.2.1

 -  Initial version inherited from Sonardyne International Limited, August 2004.

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Founder Riverblade Limited
United Kingdom United Kingdom
I haven't always written software for a living. When I graduated from Surrey University in 1989, it was with an Electronic Engineering degree, but unfortunately that never really gave me the opportunity to do anything particularly interesting (with the possible exception of designing Darth Vader's Codpiece * for the UK Army in 1990).
    * Also known as the Standard Army Bootswitch. But that's another story...
Since the opportunity arose to lead a software team developing C++ software for Avionic Test Systems in 1996, I've not looked back. More recently I've been involved in the development of subsea acoustic navigation systems, digital TV broadcast systems, port security/tracking systems, and most recently software development tools with my own company, Riverblade Ltd.

One of my personal specialities is IDE plug-in development. ResOrg was my first attempt at a plug-in, but my day to day work is with Visual Lint, an interactive code analysis tool environment with works within the Visual Studio and Eclipse IDEs or on build servers.

I love lots of things, but particularly music, photography and anything connected with history or engineering. I despise ignorant, intolerant and obstructive people - and it shows...I can be a bolshy cow if you wind me up the wrong way...Laugh | :laugh:

I'm currently based 15 minutes walk from the beach in Bournemouth on the south coast of England. Since I moved here I've grown to love the place - even if it is full of grockles in Summer!

Written By
Software Developer Riverblade Ltd
United Kingdom United Kingdom
I'm a software developer and/or tester with Riverblade Ltd (www.riverblade.co.uk) developing our core product range including our Visual Lint integration product and Lint Project Professional.

I incorporate a number of technologies into a daily basis including Windows API, C++ (VS2008), Managed C++, CLI, Databases, Java, JNI, Eclipse Framework, CDT and of course Visual Studio Extensibility (VSIP VSX).

In my spare time I enjoy cooking (prepping ingredients from scratch!), running, cycling, swimming, reading, interested in experimental electronic music (such as ClockDVA), movies, volunteering my IT skills where I can.

Comments and Discussions