# 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
ApacheIBMLicenseHeader.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
*.scala=has_block_license, no_tabs, no_trailing_spaces, eol_at_eof
*.py=no_tabs, no_trailing_spaces, eol_at_eof
*.java=has_block_license, no_tabs, no_trailing_spaces, eol_at_eof
*.js=no_tabs, no_trailing_spaces, eol_at_eof
*.gradle=no_tabs, no_trailing_spaces, eol_at_eof
*.md=no_tabs, eol_at_eof
*.go=has_block_license, no_tabs, no_trailing_spaces, eol_at_eof
build.xml=no_tabs, no_trailing_spaces, eol_at_eof
deploy.xml=no_tabs, no_trailing_spaces, eol_at_eof

# List of paths (inclusive of subdirectories) to exlude from code scanning
[Excludes]
# General exclusions
.tox
.git
# OpenWhisk exclusions
bin
tests/build/reports
tests/dat
# openwhisk-catalog exclusions (Python samples)
packages/samples/hello
# The following repos. have so far been identified as having scanning errors
# and will be excluded until their owners have completed updates to add Travis
# support, run scancode and become compliant.
openwhisk-debugger
openwhisk-client-python
openwhisk-client-go
openwhisk-client-js
openwhisk-vscode
openwhisk-devtools
openwhisk-package-jira
openwhisk-sample-matos
openwhisk-GitHubSlackBot

[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
