We all use powerful code analysis tool, but sometimes you’re presented with a problem and you have just… the terminal.
This Bash code is handy.
grep "def " /home/carles/code/gitlab/cloud/terraform/src/scale/lib/iscsi.py | tr "()" " " | awk '{ print $2; }' | grep -v "__init" | sort > ./function_names_iscsi.txt
So this basically will get all the methods (“def ” whatever), strip the parenthesis with tr, and get the second column with awk, so basically the method name, sort it and write it to the file.
Then I will cd to the src directory and execute the seconds part:
cd /home/carles/code/gitlab/cloud/terraform/src/ for fname in $(cat ~/function_names_iscsi.txt); do printf "%s: %s\n" "$fname" "$(grep -r $fname *|grep -v 'def ' -c)"; done > ~/functions_being_used.txt
That will produce a nice list with the number of times of the method being called, in the form of:
method_name: occurrences
That’s the equivalent to doing Find Usages is PyCharm.
It’s easy to identify dead code then, with method_name: 0.
You can also run this to your Jenkins to warn when there is Dead Code in your repository.