From 03be76f28972c8685a9e013e0e6e64bbeb91f1c8 Mon Sep 17 00:00:00 2001
From: Stuffed <stuffedgames@gmail.com>
Date: Mon, 1 May 2017 23:10:23 +0900
Subject: [PATCH] More sanity checks

---
 sanityCheck | 47 ++++++++++++++++++++++++++---------------------
 1 file changed, 26 insertions(+), 21 deletions(-)

diff --git a/sanityCheck b/sanityCheck
index 86fc59fbd13..386a44381a7 100755
--- a/sanityCheck
+++ b/sanityCheck
@@ -4,45 +4,50 @@ if [ ! -d ".git" ]; then
 	echo "No .git repo found - skipping sanity checks"
 	exit 0
 fi
+GREP="git grep -n --color"
 # Check for missing right angle bracket: <</if>
-git grep "<</[^>]*>[^>]" -- 'src/*'
-git grep "<<[^>]*>[^<>"$'\r]*\r'"\?$" -- 'src/*'
+$GREP "<</[^>]*>[^>]" -- 'src/*'  | sed 's/^/[Rule1] /'
+$GREP "<<[^>()]*>[^()<>"$'\r]*\r'"\?$" -- 'src/*' | sed 's/^/[Rule2] /'
 # Check for missing left angle bracket: </if>>
-git grep "[^<]</[^<>]*>>" -- 'src/*'
+$GREP "[^<]</[^<>]*>>" -- 'src/*' | sed 's/^/[Rule3] /'
 # Check for accidental assignment.  e.g.:   <<if $foo = "hello">>
-git grep "<<[ ]*if[^>=]*[^><\!=]=[^=][^>]*>>" -- 'src/*'
+$GREP "<<[ ]*if[^>=]*[^><\!=]=[^=][^>]*>>" -- 'src/*' | sed 's/^/[Rule4] /'
 # Check for missing ".  e.g.:   <<if $foo = "hello>>
-git grep "<<[^\"<>]*\"[^\"<>]*>>" -- 'src/*'
+$GREP "<<[^\"<>]*\"[^\"<>]*>>" -- 'src/*' | sed 's/^/[Rule5] /'
 # Check for missing ".  e.g.:   <<if $foo = "hello)
-git grep "<<[^\"<>]*\([^\"<>]*\"[^><\"]*\"\| [<>] \)*\"\([^\"<>]*\"[^><\"]*\"\| [<>] \)*\([^\"<>]\| [<>] \)*>>" -- 'src/*'
+$GREP "<<[^\"<>]*\([^\"<>]*\"[^><\"]*\"\| [<>] \)*\"\([^\"<>]*\"[^><\"]*\"\| [<>] \)*\([^\"<>]\| [<>] \)*>>" -- 'src/*' | sed 's/^/[Rule6] /'
 # Check for colors like: @@color:red   - should be @@.red
-git grep -e "@@color:" --and --not -e  "@@color:rgb([0-9 ]\+,[0-9 ]\+,[0-9 ]\+)" -- "src/*"
+$GREP -e "@@color:" --and --not -e  "@@color:rgb([0-9 ]\+,[0-9 ]\+,[0-9 ]\+)" -- "src/*" | sed 's/^/[Rule7] /'
 # Check for missing $ in activeSlave or PC
-git grep "<<[ ]*[^\$><_\[]*\(activeSlave\|PC\)[.]"  -- "src/*"
+$GREP "<<[ ]*[^\$><_\[]*\(activeSlave\|PC\)[.]"  -- "src/*" | sed 's/^/[Rule8] /'
 # Check for closing bracket without opening bracket.  e.g.:  <<if foo)>>      (but  <<case "foo")>>   is valid, so ignore those
-git grep -e "<<[ a-zA-Z]\+[^()<>]*)" --and --not -e "<< *case"  -- "src/*"
+$GREP -e "<<[ a-zA-Z]\+[^()<>]*)" --and --not -e "<< *case"  -- "src/*" | sed 's/^/[Rule9] /'
 # Check for opening bracket without closing bracket.  e.g.:  <<if (foo>>
-git grep -e "<<[ a-zA-Z]\+([^()<>]*>>" -- "src/*"
+$GREP -e "<<[ a-zA-Z]\+([^()<>]*>>" -- "src/*" | sed 's/^/[Rule10] /'
 # Check for two closing brackets but one opening bracket.  e.g.:  <<if (foo))>>
-git grep -e "<<[ a-zA-Z]\+[^()<>]*([^()]*)[^()]*)[^()<>]*>>"  -- "src/*"
+$GREP -e "<<[ a-zA-Z]\+[^()<>]*([^()]*)[^()]*)[^()<>]*>>"  -- "src/*" | sed 's/^/[Rule11] /'
 # Check for one closing bracket but two opening brackets.  e.g.:  <<if ((foo)>>
-git grep -e "<<[ a-zA-Z]\+[^()<>]*([^()]*([^()]*)[^()<>]*>>"  -- "src/*"
+$GREP -e "<<[ a-zA-Z]\+[^()<>]*([^()]*([^()]*)[^()<>]*>>"  -- "src/*" | sed 's/^/[Rule12] /'
 # Check for missing >>.  e.g.:   <<if $foo
-git grep "<<[^<>]*[^,\"\[{"$'\r]\r'"\?$" -- 'src/*'
+$GREP "<<[^<>]*[^,\"\[{"$'\r]\r'"\?$" -- 'src/*' | sed 's/^/[Rule13] /'
 # Check for too many >>>.  e.g.: <</if>>> 
-git grep "<<[^<>]*[<>]\?[^<>]*>>>" -- "src/*.tw"
+$GREP "<<[^<>]*[<>]\?[^<>]*>>>" -- "src/*.tw" | sed 's/^/[Rule14] /'
 # Check for wrong capitilization on 'activeslave' and other common typos
-git grep -e "\$act" --and --not -e "\$\(activeSlave\|activeArcology\|activeStandard\|activeOrgan\|activeLimbs\)" -- "src/*"
-git grep  "\(csae\|[a-z] She \|attepmts\|youreslf\|advnaces\)" -- 'src/*'
-git grep "\$slave\[" -- 'src/*'
+$GREP -e "\$act" --and --not -e "\$\(activeSlave\|activeArcology\|activeStandard\|activeOrgan\|activeLimbs\)" -- "src/*" | sed 's/^/[Rule15a] /'
+$GREP  "\(csae\|[a-z] She \|attepmts\|youreslf\|advnaces\)" -- 'src/*' | sed 's/^/[Rule15b] /'
+$GREP "\$slave\[" -- 'src/*' | sed 's/^/[Rule15c] /'
 # Check for strange spaces e.g.  $slaves[$i]. lips
-git grep "\$slaves\[\$i\]\. " -- 'src/*'
+$GREP "\$slaves\[\$i\]\. " -- 'src/*' | sed 's/^/[Rule16] /'
 # Check using refreshmentType instead of refreshment
-git grep "\$PC.refreshmentType[^ =]" -- 'src/*'
+$GREP "\$PC.refreshmentType[^ =]" -- 'src/*' | sed 's/^/[Rule17] /'
 # Check, e.g., <<//if>>
-git grep "<</[a-zA-Z]*[^a-zA-Z<>]\+[a-zA-Z]*>>" -- 'src/*'
+$GREP "<</[a-zA-Z]*[^a-zA-Z<>]\+[a-zA-Z]*>>" -- 'src/*' | sed 's/^/[Rule18] /'
 # Check, e.g., =to
-git grep "=to" -- 'src/*'
+$GREP "=to" -- 'src/*' | sed 's/^/[Rule19] /'
+# Check doing  $slaves.foo instead of $slaves[i].foo
+$GREP -e "[$]slaves[.]"  --and --not -e '[$]slaves[.]\(length\|random\|map\|filter\|deleteAt\|push\)' -- 'src/*' | sed 's/^/[Rule20] /'
+# Try to check for accidentally mixing slaves[] and activeSlave.  This can have a lot of false matches, but catches some good matches too
+$GREP -e "activeSlave[.]" --and -e "slaves\[..\?\][.]" --and --not -e '[.]ID' --and --not -e 'slaves\[..\?\][.]\(slaveName\|actualAge\|relation\|assignment\|devotion\|trust\|vagina\)' -- 'src/*' | sed 's/^/[Rule21] /'
 
 # Check that all the tags are properly opened and closed
 git ls-files "src/*.tw" | xargs -d '\n' ./devTools/check.py
-- 
GitLab