Click here to Skip to main content
Click here to Skip to main content

Poor Man’s Visual Studio Cppcheck Integration

By , 9 Oct 2012
 

Introduction

Cppcheck is a good tool to have in your arsenal. Anything that helps me avoid stupid mistakes is very welcome. The problem is that if you use Visual Studio, you either have to use the separate Cppcheck GUI or pay an arm and a leg for something like Visual Lint. If you want a more convenient way to run Cppcheck on your code, but don't want to shell out $200 for the privilege, there's a fairly easy way to do a simple integration.

This article is a re-post from http://avitebskiy.blogspot.com/2012/10/poor-mans-visual-studio-cppcheck.html

Getting Started

First things first, download the latest version Cppcheck from http://cppcheck.sourceforge.net/ and install it. This will give you both the command line version and the GUI version of Cppcheck.

Create a Visual Studio External Tool

In Visual Studio, open menu Tools→External Tools...

  • Click the Add button
  • Set the Title, for example Cppcheck
  • Set Command to C:\Program Files (x86)\Cppcheck\cppcheck.exe
  • Set Arguments to --quiet --verbose --template=vs $(ItemPath)
  • Set Initial Directory to $(ItemDir)
  • Make sure Use Output window checkbox is enabled
  • Click on the Move Up button repeatedly until your entry is at the top of the list, this will make it easier to identify you new command as you can count on it being called Tools.ExternalCommand1
  • Click OK.

Voila!  You now have a Cppcheck entry in your Tools menu:

 

Use the Tool

You can now use select the Cppcheck menu entry any time you want to run Cppcheck on a file.  The cool thing about the --template=vs switch is that you can click on a Cppcheck error and Visual Studio will automatically take you to that line of code:

Automate Cppcheck to Run on File Save

Now that we have created a command to run Cppcheck, we can have it run automatically after a file save:

  • Go to menu ToolsMacrosMacros IDE, this will bring up a the Macros IDE
  • On the left hand side there should be a Project Explorer panel
  • In the Project Explorer panel, double click on EnvironmentEvents module
  • Insert the following code in the module:
Private Sub DocumentEvents_DocumentSaved(ByVal Document As EnvDTE.Document) Handles DocumentEvents.DocumentSaved
    If Document.Language = "C/C++" Then
        DTE.ExecuteCommand("Tools.ExternalCommand1")
        Document.Activate()
    End If
End Sub
  • Now save the module, close the Macros IDE, and you're good to go

License

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

About the Author

Aleksey Vitebskiy
Software Developer TerraGo Technologies
United States United States
Member
No Biography provided

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralMy vote of 5memberDonChunior28 Jan '13 - 22:31 
QuestionGreat article! How to adjust the macro for "save all"?memberPachner28 Jan '13 - 4:59 
AnswerRe: Great article! How to adjust the macro for "save all"?memberAleksey Vitebskiy29 Jan '13 - 4:52 
GeneralMy vote of 5memberDrABELL9 Oct '12 - 7:23 
GeneralMy vote of 5memberAnna-Jayne Metcalfe8 Oct '12 - 4:39 
QuestionGood articlememberAnna-Jayne Metcalfe8 Oct '12 - 4:35 
AnswerRe: Good articlememberAleksey Vitebskiy8 Oct '12 - 5:37 
GeneralRe: Good articlememberAnna-Jayne Metcalfe8 Oct '12 - 5:54 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web02 | 2.6.130523.1 | Last Updated 9 Oct 2012
Article Copyright 2012 by Aleksey Vitebskiy
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid