将cppCheck与TortoiseSVN配合使用

参考:

https://sourceforge.net/p/cppcheck/wiki/tortoisesvn/

http://omerez.com/automatic-static-code-analysis/


TortoiseSVN

Since we are not robots (yet), it is very possible to forget running a Cppcheck before committing code to the SVN server. Organizations that use Cppcheck (or any other code analysis tool) usually perform the code analysis once a day/week/month. Usually the team leader assigns a task to developer to fix the issue, commit the code and wait for the next code analysis. And then we start this cycle again. Sometimes the code analysis is taken after a build was already released to QA, or even worse, to customers.

So we all know that asking your developers to run the Cppcheck before every commit they do is not feasible. However, this process can be automated (and in some way also made invisible) for the developers.

Attached to this page is a script which will automatically force the Cppcheck on all source files that are being committed. The check is run when the commit is triggered (before the commit is actually performed) with a zero effort from the developers. In the case issues are found, the script will fail the commit so the developer can fix the issues and commit only ''Cppcheck''-checked code (failing the commit can be bypassed if needed). The great value of this approach is that we can fix the issues before they are committed to the SVN server!

Configuration

  • Download the SVN_Pre_Commit_Hook__CppCheck_Validate.bat script to your machine and edit it:
  • cppCheckPath - Full path to your Cppcheck.exe (not CppcheckGui.exe).
  • supportedFileTypes - Add or remove file types to check. This variable is here so the script won't check '.sln', '.vxproj' and other non-source file types.
  • enableScript - '1' or '0' to enable/disable running the script.
  • Right click (somewhere on desktop) --> TortoiseSVN --> Settings --> Hook Scripts --> Add...
  • Configure Hook Scripts:
  • Hook Type: Choose 'Pre-Commit Hook' (upper right corner).
  • Working Copy Path: The directory that all of your SVN checkouts are done. Use the top most directory (or just use 'C:\' for example).
  • Command Line To Execute: Full path to the attached script.
  • Make sure that both 'Wait for the script to finish' and 'Hide the script while running' checkboxes are checked --> OK --> OK.

Hints

  • Even if the commit failed because of the Cppcheck, SVN gives you the option to easily recommit disregarding the failure by clicking the 'Retry without hooks' button. If commit succeeded (meaning, Cppcheck did not find any issues), it will look like nothing happened (so developers will still see a commit end message just like before).
  • If you want to implement this solution in your organization/team you can do it in two different approaches:
  • Client side solution - Meaning, the steps above should be taken for all of your development machines. The benefit in this approach is that only relevant teams can use this solution and not all of the developers that are working on the SVN server. Besides, ignoring this Cppcheck (in case of false-positives for example) is quite easy using one button click integrated in the TortoiseSVN Client ('Retry without hooks'). This approach means that Cppcheck must be installed on all of the relevant developers machines of course.
  • Server side solution - Meaning, Cppcheck should be installed only on the SVN server and the steps above should be taken only once (server side only). So clients (developers' machines) should take no action since every commit will trigger the hook at server side. The benefit is this is taken only once, but this solution may be to restrictive for some organizations. In addition, in order to ignore the hook (once again, false-positive for example) - you need to create some 'back-door' script that will allow developers to bypass it with a specific keyword in the commit message.
  • More about SVN hook scripts - Client Hook ScriptsServer Hook Scripts.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值