Colin McMillen 2020-02-14 13:25:55 +00:00
parent 84df656c06
commit 9222003e4c

38
bcs%3A-Bad-Code-Search.md Normal file

@ -0,0 +1,38 @@
`bcs` is a command-line utility for searching a git-based codebase that syntax-highlights the results. Only files included in the git tree are searched. (This avoids wasting time searching through build output files, autogenerated source code that's not checked in, etc.)
Grab the latest version: <https://git.semicolin.games/semicolin/sneak/src/branch/master/tools/scripts/bcs.sh>
It expects you've already installed the `highlight` program on your system (`sudo apt install highlight` or similar).
Usage:
```
bcs.sh [-i] [-f/--file FILE_PATTERN] [-x/--extension EXTENSION] [-C/--context NUM_LINES] [-t/--tree TREE_NAME] QUERY
Arguments:
-i ignore case in searching for matches
-f pattern to match filenames against
-x file extension that must be matched
-C number of lines of context to include before and after each match (default: 3)
-t tree-ish id (as per `git ls-tree`)
```
Some examples:
```
Search for the token "Vector3" in files whose names contain "Line":
$ bcs.sh --file Line Vector3
Search for "new vector3" on the same line (in that order but not necessarily next to each other; case-insensitive):
$ bcs.sh -i new vector3
Show 10 lines of context before & after each match:
$ bcs.sh -C 10 new Vector3
Search for "sprite" only in files ending in ".py":
$ bcs.sh -x py sprite
Search for "spritebatch" in .cs files with "World" in their names (case-insensitive):
$ bcs.sh -i -x cs -f World spritebatch
Search for "SpriteBatch" in .cs files under MonoGame.Framework/ in the tree named "develop" (the main branch that MonoGame develops on):
$ bcs.sh --tree develop -x cs -f MonoGame.Framework/ SpriteBatch
```