Add ability to supress scanner for specific files

This commit is contained in:
Ciaran Gultnieks 2013-03-20 09:46:30 +00:00
parent 8c195c637a
commit 9a72cb7209
2 changed files with 28 additions and 5 deletions

View file

@ -754,6 +754,14 @@ If the native code is being built by other means, you can specify
not required, remove the directory instead (using @code{prebuild} for not required, remove the directory instead (using @code{prebuild} for
example). example).
@item scanignore=path1;path2;...
Enables one or more files/paths to be exlcuded from the scan process.
This should only be used where there is a very good reason, and
probably accompanied by a comment explaining why it is necessary.
When scanning, files whose relative paths start with any of the paths
given here are ignored.
@item submodules=yes @item submodules=yes
Use if the project (git only) has submodules - causes git submodule Use if the project (git only) has submodules - causes git submodule
init and update to be executed after the source is cloned. init and update to be executed after the source is cloned.

View file

@ -1991,6 +1991,11 @@ def scan_source(build_dir, root_dir, thisbuild):
'heyzap', 'heyzap',
'jpct-ae'] 'jpct-ae']
if 'scanignore' in thisbuild:
ignore = thisbuild['scanignore'].split(';')
else:
ignore = []
# Iterate through all files in the source code... # Iterate through all files in the source code...
for r,d,f in os.walk(build_dir): for r,d,f in os.walk(build_dir):
for curfile in f: for curfile in f:
@ -2001,6 +2006,15 @@ def scan_source(build_dir, root_dir, thisbuild):
# Path (relative) to the file... # Path (relative) to the file...
fp = os.path.join(r, curfile) fp = os.path.join(r, curfile)
# Check if this file has been explicitly excluded from scanning...
ignorethis = False
for i in ignore:
if fp.startswith(i):
ignorethis = True
break
if ignorethis:
continue
for suspect in usual_suspects: for suspect in usual_suspects:
if suspect in curfile.lower(): if suspect in curfile.lower():
msg = 'Found probable non-free blob ' + fp msg = 'Found probable non-free blob ' + fp
@ -2010,12 +2024,13 @@ def scan_source(build_dir, root_dir, thisbuild):
msg = 'Found apk file, which should not be in the source - ' + fp msg = 'Found apk file, which should not be in the source - ' + fp
problems.append(msg) problems.append(msg)
elif curfile.endswith('.elf'):
msg = 'Found .elf at ' + fp
problems.append(msg)
elif curfile.endswith('.so'): elif curfile.endswith('.so'):
if '/jni' in r: msg = 'Found .so at ' + fp
print 'Warning: Found ELF at ' + fp problems.append(msg)
else:
msg = 'Found ELF at ' + fp
problems.append(msg)
elif curfile.endswith('.java'): elif curfile.endswith('.java'):
for line in file(fp): for line in file(fp):