diff --git a/scripts/mytasks.pl b/scripts/mytasks.pl index 1cceedb96490b0cbf37e480fdfa23e75223e650e..a1ca52a2fcf61c02d1eeb90d801668b5fcd0296f 100644 --- a/scripts/mytasks.pl +++ b/scripts/mytasks.pl @@ -20,27 +20,70 @@ sub checkLine { $file = escape($file); $row = escape($row); - if ($line =~ /(FIXME|TODO)(.*)$/) { + if ($file =~ /(.cpp|.c|.cxx|.h)$/ && $line =~ /(FIXME|TODO)(.*)$/) { print "$file\t$row\tWARNING\t$1$2\n"; } - if ($line =~ /(qDebug|QDebug>|QtDebug>|<debug>)/) { - print "$file\t$row\tWARNING\tRemove debug code\n"; + if ($file =~ /(.cpp|.c|.cxx|.h)$/ && $line =~ /(qDebug|QDebug>|QtDebug>|<debug>)/) { + print "$file\t$row\tWARNING\tRemove debug code.\n"; } if ($line =~ /^(<<<<|====|>>>>)/) { - print "$file\n$row\tERROR\tResolve conflict!\n"; + print "$file\n$row\tERROR\tResolved conflict.\n"; } - if ($line =~ /(Q_SIGNALS|Q_SLOTS)/) { - print "$file\t$row\tWARNING\tPrefer signals and slots over Q_SIGNALS and Q_SLOTS\n"; + if ($file =~ /(.cpp|.c|.cxx|.h)$/ && $line =~ /(Q_SIGNALS|Q_SLOTS)/) { + print "$file\t$row\tWARNING\tPrefer signals and slots over Q_SIGNALS and Q_SLOTS.\n"; } if ($line =~ /^#\s*(warning|error) (.*)$/) { - print "$file\t$row\t$1\tClean up preprocessor $1:$2\n"; + print "$file\t$row\t$1\tClean up preprocessor $1:$2.\n"; + } + if ($file =~ /(.cpp|.c|.cxx|.h)$/ && $line =~ /\s+$/) { + print "$file\t$row\tWARNING\tTrailing whitespaces found.\n"; + } + if ($file =~ /(.cpp|.c|.cxx|.h)$/ && $line =~ /^ *\t */) { + print "$file\t$row\tWARNING\tTabs used to indent.\n"; + } + if ($file =~ /(.cpp|.c|.cxx|.h)$/ && $line =~ /^\s*{$/) { + print "$file\t$row\tWARNING\tOpening bracket found all alone on a line.\n"; + } + if ($file =~ /(.cpp|.c|.cxx|.h)$/ && $line =~ /{.*[^\s].*$/) { + if ($line !~ /{\s+\/\*/) + { print "$file\t$row\tWARNING\tText found after opening bracket.\n"; } + } + if ($file =~ /(.cpp|.c|.cxx|.h)$/ && $line =~ /[a-zA-Z0-9_]([*&])[^\/]/) { + print "$file\t$row\tWARNING\tUse \"TYPE ${1}NAME\" (currently the space between TYPE and $1 is missing).\n"; + } + if ($file =~ /(.cpp|.c|.cxx|.h)$/ && $line =~ /[*&]\s+/) { + next if ($line =~ /^\s*\*\s+/); + next if ($line =~ /\/\*/); + print "$file\t$row\tWARNING\tUse \"TYPE ${1}NAME\" (currently there is a space between $1 and NAME).\n"; } } my $filename = ""; my $pos = 0; -open(PIPE, "git diff origin/master|"); +sub getDiffOrigin { + my $currentBranch = `git branch | grep "^* "`; + chop $currentBranch; + $currentBranch =~ s/^* //; + + my $remoteRepo = `git config --local --get branch.$currentBranch.remote`; + chop $remoteRepo; + + return "HEAD" if (!$remoteRepo); + + my $remoteBranch = `git config --local --get branch.$currentBranch.merge`; + chop $remoteBranch; + $remoteBranch =~ s!^refts/heads/!!; + + return "HEAD" if (!$remoteBranch); + + return "$remoteRepo/$remoteBranch"; +} + +my $origin = getDiffOrigin; +print "# running: git diff $origin ...\n"; + +open(PIPE, "git diff $origin|"); while (<PIPE>) { chomp; my $line = $_;