<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to mercurialhook-cppcheck-diff-hook</title><link>https://sourceforge.net/p/cppcheck/wiki/mercurialhook-cppcheck-diff-hook/</link><description>Recent changes to mercurialhook-cppcheck-diff-hook</description><atom:link href="https://sourceforge.net/p/cppcheck/wiki/mercurialhook-cppcheck-diff-hook/feed" rel="self"/><language>en</language><lastBuildDate>Tue, 30 Sep 2014 15:02:54 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/cppcheck/wiki/mercurialhook-cppcheck-diff-hook/feed" rel="self" type="application/rss+xml"/><item><title>mercurialhook-cppcheck-diff-hook modified by Daniel Marjamäki</title><link>https://sourceforge.net/p/cppcheck/wiki/mercurialhook-cppcheck-diff-hook/</link><description>&lt;div class="markdown_content"&gt;&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Hook script to compare cppcheck before and after a mercurial commit, uses &lt;a class="" href="/p/cppcheck/wiki/mercurialhook-cppcheck-diff"&gt;cppcheck-diff.sh&lt;/a&gt;. The usage for the script is described in detail at &lt;a class="" href="/p/cppcheck/wiki/mercurialhook"&gt;pre-commit hook&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="limitations"&gt;Limitations&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Assumes "safe" host system&lt;/li&gt;
&lt;li&gt;Needs interactive terminal&lt;/li&gt;
&lt;li&gt;Needs writeable $TMPDIR (which is hard-coded)&lt;/li&gt;
&lt;li&gt;cpp/h filenames are hard-coded. Script needs to be altered to match your project&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="script"&gt;Script&lt;/h2&gt;
&lt;table class="codehilitetable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="c"&gt;# Licence : GPLv3+, 2013&lt;/span&gt;
&lt;span class="nv"&gt;HG_ROOT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;hg root&lt;span class="sb"&gt;`&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; x&lt;span class="s2"&gt;"$HG_ROOT"&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; x&lt;span class="s2"&gt;""&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; ; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"not an hg repo..."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="nb"&gt;pushd&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;HG_ROOT&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt; &amp;gt; /dev/null

&lt;span class="c"&gt;#Get a list of modified files&lt;/span&gt;
&lt;span class="nv"&gt;ALTERED_FILES&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;hg status | egrep &lt;span class="s1"&gt;'^[MA]'&lt;/span&gt; | egrep &lt;span class="s1"&gt;'\.(cpp|h)$'&lt;/span&gt; | sed &lt;span class="s1"&gt;'s/[MA]\s//'&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;

&lt;span class="nv"&gt;TMPDIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/cppcheck-newerrs/

mkdir -p &lt;span class="s2"&gt;"$TMPDIR"&lt;/span&gt;

&lt;span class="nv"&gt;SAVEIFS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$IFS&lt;/span&gt;
&lt;span class="nv"&gt;IFS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; -en &lt;span class="s2"&gt;"\n\b"&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;i in &lt;span class="nv"&gt;$ALTERED_FILES&lt;/span&gt;
&lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Checking for errors :  $i"&lt;/span&gt;
    hg diff &lt;span class="s2"&gt;"$i"&lt;/span&gt; &amp;gt; &lt;span class="nv"&gt;$TMPDIR&lt;/span&gt;/patch-file-dhje
    mkdir -p &lt;span class="sb"&gt;`&lt;/span&gt;dirname &lt;span class="s2"&gt;"$TMPDIR/$i"&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
    cp &lt;span class="s2"&gt;"$i"&lt;/span&gt; &lt;span class="s2"&gt;"$TMPDIR/$i"&lt;/span&gt;
    cp &lt;span class="s2"&gt;"$i"&lt;/span&gt; &lt;span class="s2"&gt;"$TMPDIR/$i.orig"&lt;/span&gt;

    &lt;span class="nb"&gt;pushd&lt;/span&gt; &lt;span class="nv"&gt;$TMPDIR&lt;/span&gt; &amp;gt; /dev/null
    patch -Rs -p1 &amp;lt; patch-file-dhje
    cppcheck-diff.sh &lt;span class="s2"&gt;"$i"&lt;/span&gt; &lt;span class="s2"&gt;"$i.orig"&lt;/span&gt; &amp;gt;&amp;gt; &lt;span class="s2"&gt;"$TMPDIR/cppcheck-new-errs"&lt;/span&gt;
    rm &lt;span class="s2"&gt;"$i"&lt;/span&gt; &lt;span class="s2"&gt;"$i.orig"&lt;/span&gt; patch-file-dhje
    &lt;span class="nb"&gt;popd&lt;/span&gt; &amp;gt; /dev/null
&lt;span class="k"&gt;done&lt;/span&gt;

&lt;span class="nb"&gt;popd&lt;/span&gt; &amp;gt; /dev/null

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; ! -f &lt;span class="nv"&gt;$TMPDIR&lt;/span&gt;/cppcheck-new-errs &lt;span class="o"&gt;]&lt;/span&gt; ; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;exit &lt;/span&gt;0
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;wc -l &lt;span class="nv"&gt;$TMPDIR&lt;/span&gt;/cppcheck-new-errs | awk &lt;span class="s1"&gt;'{print $1}'&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt; -ne 0 &lt;span class="o"&gt;]&lt;/span&gt; ; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"The following new cppcheck warnings were detected:"&lt;/span&gt;
    cat &lt;span class="s2"&gt;"$TMPDIR/cppcheck-new-errs"&lt;/span&gt;

    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"abort? (y/n)"&lt;/span&gt;

    &lt;span class="nb"&gt;read &lt;/span&gt;wantAbort

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; x&lt;span class="s2"&gt;"$wantAbort"&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; x&lt;span class="s2"&gt;"y"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; ; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;        &lt;/span&gt;rm -rf &lt;span class="s2"&gt;"$TMPDIR"&lt;/span&gt;
        &lt;span class="nb"&gt;exit &lt;/span&gt;1
    &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
rm -rf &lt;span class="s2"&gt;"$TMPDIR"&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Daniel Marjamäki</dc:creator><pubDate>Tue, 30 Sep 2014 15:02:54 -0000</pubDate><guid>https://sourceforge.net560fa5a72e26be80738535ba510b52711d03b7a6</guid></item></channel></rss>