Tools: enforce astyle formatting in AP_DDS

This commit is contained in:
Peter Barker 2023-04-05 12:59:12 +10:00 committed by Peter Barker
parent 67895ef2c5
commit cdb4012886
3 changed files with 73 additions and 0 deletions

View File

@ -17,6 +17,7 @@ jobs:
check_autotest_options, check_autotest_options,
param_parse, param_parse,
python-cleanliness, python-cleanliness,
astyle-cleanliness,
validate_board_list, validate_board_list,
] ]
steps: steps:
@ -29,4 +30,6 @@ jobs:
CI_BUILD_TARGET: ${{matrix.config}} CI_BUILD_TARGET: ${{matrix.config}}
shell: bash shell: bash
run: | run: |
sudo apt update
sudo apt-get install -y astyle
Tools/scripts/build_ci.sh Tools/scripts/build_ci.sh

View File

@ -401,6 +401,12 @@ for t in $CI_BUILD_TARGET; do
continue continue
fi fi
if [ "$t" == "astyle-cleanliness" ]; then
echo "Checking AStyle code cleanliness"
./Tools/scripts/run_astyle.py
continue
fi
if [ "$t" == "configure-all" ]; then if [ "$t" == "configure-all" ]; then
echo "Checking configure of all boards" echo "Checking configure of all boards"
./Tools/scripts/configure_all.py ./Tools/scripts/configure_all.py

64
Tools/scripts/run_astyle.py Executable file
View File

@ -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())