mirror of https://github.com/ArduPilot/ardupilot
54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
|
#!/usr/bin/env python
|
||
|
|
||
|
"""
|
||
|
Runs flake8 over Python files which contain a marker indicating
|
||
|
they are clean, ensures that they actually are
|
||
|
|
||
|
AP_FLAKE8_CLEAN
|
||
|
"""
|
||
|
|
||
|
import os
|
||
|
import subprocess
|
||
|
import sys
|
||
|
|
||
|
import argparse
|
||
|
|
||
|
os.environ['PYTHONUNBUFFERED'] = '1'
|
||
|
|
||
|
|
||
|
class Flake8Checker(object):
|
||
|
def __init__(self):
|
||
|
self.retcode = 0
|
||
|
|
||
|
def progress(self, string):
|
||
|
print("****** %s" % (string,))
|
||
|
|
||
|
def check(self, filepath):
|
||
|
self.progress("Checking (%s)" % filepath)
|
||
|
retcode = subprocess.call(["flake8", filepath])
|
||
|
if retcode != 0:
|
||
|
self.progress("File (%s) failed with retcode (%s)" %
|
||
|
(filepath, retcode))
|
||
|
self.retcode = 1
|
||
|
|
||
|
def run(self):
|
||
|
for (dirpath, dirnames, filenames) in os.walk("Tools"):
|
||
|
for filename in filenames:
|
||
|
if os.path.splitext(filename)[1] != ".py":
|
||
|
continue
|
||
|
filepath = os.path.join(dirpath, filename)
|
||
|
content = open(filepath).read()
|
||
|
if "AP_FLAKE8_CLEAN" not in content:
|
||
|
continue
|
||
|
self.check(filepath)
|
||
|
return self.retcode
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
parser = argparse.ArgumentParser(description='Check all Python files for flake8 cleanliness')
|
||
|
# parser.add_argument('--build', action='store_true', default=False, help='build as well as configure')
|
||
|
args = parser.parse_args()
|
||
|
|
||
|
checker = Flake8Checker()
|
||
|
sys.exit(checker.run())
|