Files
create/src/Tools/LicenseChecker.py
Chris Hennes 62bfb44a0d [Tools] Fix static analyis issues
This commit addresses issues identified by LGTM for the various
independent (and mostly-independent) files in the Tools subdirectory.
The vast majority of the issues are trivial, and are things like unused
imports or catching BaseException. There was one true bug identified, a
global variable being changed in a function where it was not marked
global, but it only affected output quantity (the variable is named
"VERBOSE"). A couple of other issues identified variables that appear to
represent no-longer-existing options in the code. The options were left,
but a deprecation printout replaces the variable in the event the option
is provided.
2021-02-28 17:53:04 +01:00

92 lines
2.8 KiB
Python

#! python
# -*- coding: utf-8 -*-
# (c) 2013 Werner Mayer LGPL
#
# Utility to search for source, header and Python files with a missing license text
import codecs, os
ext=[".cpp", ".cxx", ".cc", ".c", ".hpp", ".hxx", ".hh", ".h", ".inl", ".inc", ".py"]
flt=['__init__.py', '_rc.py', 'CxImage',
'coin_header_includes.h',
'CxxDebug.hxx',
'IndirectPythonInterface.hxx',
('thumbs%sIExtractImage.h')%(os.path.sep),
#('src%sTools')%(os.path.sep),
('src%sTools%sembedded')%(os.path.sep,os.path.sep),
('App%skdl_cp')%(os.path.sep),
('3rdParty%satlas')%(os.path.sep),
('Mod%sGDML')%(os.path.sep),
('boost%snumeric%sbindings')%(os.path.sep,os.path.sep),
('salomesmesh%sinc')%(os.path.sep),
('App%sCore%stritritest.h')%(os.path.sep,os.path.sep)
]
# A note to tritritest.h
# tritritest.h has no licensing information, but Tomas Moller replied
# the following, when asked about it:
#
# The code is free to use for anyone and any projects, but I give no
# warranties.
#
# See: http://anonscm.debian.org/gitweb/?p=debian-science/packages/freecad.git;a=blob;f=debian/copyright
lic=['LGPL',
'GNU Library',
'GNU Lesser',
'Permission to copy, use, modify',
'Permission to use, copy, modify',
'Distributed under the Boost Software License',
'Redistribution and use in source and binary forms',
'Redistribution and use in source and binary forms',
'it under the same terms as Python itself',
'As a special exception, you may create a larger work that contains',
'Permission is hereby granted, free of charge, to any person obtaining',
'Permission is granted to anyone to use this software',
'This file was automatically generated by SWIG'
]
def startProcessing():
fn = os.path.realpath(__file__)
# get path of parent directory
fn = os.path.dirname(fn)
fn = os.path.dirname(fn)
global ext
global flt
traverse(fn, ext, flt)
def traverse(path, ext, flt):
for r,d,f in os.walk(path):
for i in f:
fn = os.path.join(r,i)
# filter out some file names
stop = False
for j in flt:
if fn.find(j) >= 0:
stop=True
break
if stop:
continue
bn = os.path.basename(fn).lower()
for j in ext:
if bn.endswith(j):
parsefile(fn)
break
def parsefile(fn):
data = codecs.open(fn,'r','utf-8')
try:
lines = data.readlines()
data.close()
global lic
for i in lines:
for j in lic:
if i.find(j) >= 0:
return
print ("Missing license text in file %s") % (fn)
except Exception:
pass
if __name__ == "__main__":
startProcessing()