hardcodes is a utility for searching strings hardcoded by developers in programs. It uses a modular tokenizer that can handle comments, any number of backslashes & nearly any syntax you throw at it.
Yes, it is designed to process any syntax and following languages are officially supported:
ada, applescript, c, c#, c++, coldfusion, golang, haskell, html, java, javascript,
jsp, lua, pascal, perl, php, powershell, python, ruby, scala, sql, swift, xml
pip3 install hardcodes
git clone https://github.com/s0md3v/hardcodes && cd hardcodes && python3 setup.py install
hardcodes is available as both a library as well as a command line program. The relevant documentation can be found below:
The sample program below demonstrates usage of hardcodes
library
from hardcodes import search
string = "console.log('hello there')"
result = search(string, lang="common", comments="parse")
print(result)
Output: ['hello there']
The arguments lang
and comments
are optional. Their use is explained below in the user documentation section.
cli.py
provides a grep-like command line interface to hardcodes
library. You will need to install the library first to use it.
python cli.py /path/to/file.ext
python cli.py -r /path/to/dir
python cli.py -o /path/to/file.ext
Specifying a language is optional and should be used only when the programming language of source is already known.
python cli.py -l 'golang' /path/to/file.go
With -c
option, you can specify
ignore
ignore the comments completelyparse
parse the comments like codestring
add comments to list of hardcoded strings
python cli.py -o /path/to/file.ext
With the -n
, --line-numbers
option, you can attach the line numbers where
string occurred. This can be used to locate the line in code easily, or to
use as input into a script that will modify the strings for you.
The line numbers are inserted between the file name, and string, also using ':' as a seperator. (See 'filter' example below).
With the -q
, --query
option, the output can be filtered by applying a
regular expression (supplied on the command line) to the extracted string.
This can be used for specific tasks, such as changing all occurances of a product's name, or publisher.
python cli.py -l python -n -q "source code" cli.py
which gives the following output:
cli.py:12:specify programming language of source code
cli.py:13:include source code line numbers in output