mirror of https://github.com/ArduPilot/ardupilot
Tools: enforce astyle formatting in AP_DDS
This commit is contained in:
parent
67895ef2c5
commit
cdb4012886
|
@ -17,6 +17,7 @@ jobs:
|
|||
check_autotest_options,
|
||||
param_parse,
|
||||
python-cleanliness,
|
||||
astyle-cleanliness,
|
||||
validate_board_list,
|
||||
]
|
||||
steps:
|
||||
|
@ -29,4 +30,6 @@ jobs:
|
|||
CI_BUILD_TARGET: ${{matrix.config}}
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt-get install -y astyle
|
||||
Tools/scripts/build_ci.sh
|
||||
|
|
|
@ -401,6 +401,12 @@ for t in $CI_BUILD_TARGET; do
|
|||
continue
|
||||
fi
|
||||
|
||||
if [ "$t" == "astyle-cleanliness" ]; then
|
||||
echo "Checking AStyle code cleanliness"
|
||||
./Tools/scripts/run_astyle.py
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "$t" == "configure-all" ]; then
|
||||
echo "Checking configure of all boards"
|
||||
./Tools/scripts/configure_all.py
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
"""
|
||||
Runs astyle over directory sub-trees known to be "astyle-clean"
|
||||
|
||||
AP_FLAKE8_CLEAN
|
||||
"""
|
||||
|
||||
import os
|
||||
import pathlib
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
import argparse
|
||||
|
||||
os.environ['PYTHONUNBUFFERED'] = '1'
|
||||
|
||||
|
||||
class AStyleChecker(object):
|
||||
def __init__(self):
|
||||
self.retcode = 0
|
||||
self.directories_to_check = [
|
||||
'libraries/AP_DDS',
|
||||
]
|
||||
self.files_to_check = []
|
||||
|
||||
def progress(self, string):
|
||||
print("****** %s" % (string,))
|
||||
|
||||
def check(self):
|
||||
'''run astyle on all files in self.files_to_check'''
|
||||
# for path in self.files_to_check:
|
||||
# self.progress("Checking (%s)" % path)
|
||||
astyle_command = ["astyle", "--dry-run"]
|
||||
astyle_command.extend(self.files_to_check)
|
||||
ret = subprocess.run(
|
||||
astyle_command,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT,
|
||||
text=True
|
||||
)
|
||||
if ret.returncode != 0:
|
||||
self.progress("astyle check failed: (%s)" % (ret.stdout))
|
||||
self.retcode = 1
|
||||
if "Formatted" in ret.stdout:
|
||||
self.progress("Files needing formatting found")
|
||||
print(ret.stdout)
|
||||
self.retcode = 1
|
||||
|
||||
def run(self):
|
||||
for d in self.directories_to_check:
|
||||
self.files_to_check.extend(list(pathlib.Path(d).glob("*")))
|
||||
self.files_to_check = list(filter(lambda x : x.suffix in [".c", ".h", ".cpp"], self.files_to_check))
|
||||
self.check()
|
||||
return self.retcode
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser(description='Check all Python files for astyle cleanliness')
|
||||
# parser.add_argument('--build', action='store_true', default=False, help='build as well as configure')
|
||||
args = parser.parse_args()
|
||||
|
||||
checker = AStyleChecker()
|
||||
sys.exit(checker.run())
|
Loading…
Reference in New Issue