# scanCode.py configuration file

# List of filenames containing the text of valid license (headers)
# These files SHOULD be in the same directory path where scanCode.py
# resides.
[Licenses]
ASFLicenseHeader.txt
ASFLicenseHeaderBash.txt
ASFLicenseHeaderHash.txt
ASFLicenseHeaderLua.txt
ASFMinifiedLicenseHashHeader.txt
ASFMinifiedLicenseHeader.txt
ASFMinifiedLicenseHeaderREM.txt

# Filters (path/filename) with wildcards and associated scan checks
# that are to be run against them.  The checks are actual valid
# function names found in scanCode.py.
[Includes]
*=is_not_symlink, regex_check
*.conf=has_block_license, no_trailing_spaces, eol_at_eof, regex_check
*.go=has_block_license, no_trailing_spaces, eol_at_eof, regex_check
*.gradle=has_block_license, no_trailing_spaces, eol_at_eof, regex_check
*.groovy=has_block_license, no_trailing_spaces, eol_at_eof, regex_check
*.html=has_block_license, no_trailing_spaces, eol_at_eof, regex_check
*.java=no_tabs, has_block_license, no_trailing_spaces, eol_at_eof, regex_check
*.js=no_tabs, has_block_license, no_trailing_spaces, eol_at_eof, regex_check
*.lua=has_block_license, no_trailing_spaces, eol_at_eof, regex_check
*.md=no_tabs, has_block_license, no_trailing_spaces, eol_at_eof, regex_check
*.properties=no_tabs, has_block_license, no_trailing_spaces, eol_at_eof, regex_check
*.py=no_tabs, has_block_license, no_trailing_spaces, eol_at_eof, regex_check
*.scala=has_block_license, no_tabs, no_trailing_spaces, eol_at_eof, regex_check
*.sh=has_block_license, no_trailing_spaces, eol_at_eof, regex_check
*.swift=no_tabs, has_block_license, no_trailing_spaces, eol_at_eof, regex_check
*.yaml=has_block_license, no_trailing_spaces, eol_at_eof, regex_check
*.yml=has_block_license, no_trailing_spaces, eol_at_eof, regex_check

# List of paths (inclusive of subdirectories) to exlude from code scanning
[Excludes]
# General exclusions
.bin
.dockerignore
.git
.gitattributes
.github
.gitignore
.jshintrc
.profiling.*
.pydevproject
.rat-excludes
.tox

# Scancode unit tests
tests/exclude

# Pathspec library
lib/

[Options]
# Not all code files allow licenses to appear starting at the first character
# of the file. This option tells the scan to allow licenses to appear starting
# within first 'x' characters of each code file (as provided by this option's
# value).
LICENSE_SLACK_LENGTH=500

# List of regular expressions for forbidden strings, e.g. \w+@company.com
[Regex]
\w+@company.com
