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 = $_;