utils: checkstyle.py: Drop astyle support
Formatting code using astyle doesn't lead to results as good as with clang-format, and doesn't receive much test coverage as most developers use clang-format. The code is thus bitrotting. Drop it. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
This commit is contained in:
parent
8fffab46b8
commit
b7704820f4
2 changed files with 8 additions and 78 deletions
|
@ -283,28 +283,12 @@ The 'clang-format' code formatting tool can be used to reformat source files
|
|||
with the libcamera coding style, defined in the .clang-format file at the root
|
||||
of the source tree.
|
||||
|
||||
Alternatively the 'astyle' tool can also be used, with the following arguments.
|
||||
|
||||
::
|
||||
|
||||
--style=linux
|
||||
--indent=force-tab=8
|
||||
--attach-namespaces
|
||||
--attach-extern-c
|
||||
--pad-oper
|
||||
--align-pointer=name
|
||||
--align-reference=name
|
||||
--max-code-length=120
|
||||
|
||||
Use of astyle is discouraged as clang-format better matches the libcamera coding
|
||||
style.
|
||||
|
||||
As both astyle and clang-format are code formatters, they operate on full files
|
||||
and output reformatted source code. While they can be used to reformat code
|
||||
before sending patches, it may generate unrelated changes. To avoid this,
|
||||
libcamera provides a 'checkstyle.py' script wrapping the formatting tools to
|
||||
only retain related changes. This should be used to validate modifications
|
||||
before submitting them for review.
|
||||
As clang-format is a code formatter, it operates on full files and outputs
|
||||
reformatted source code. While it can be used to reformat code before sending
|
||||
patches, it may generate unrelated changes. To avoid this, libcamera provides a
|
||||
'checkstyle.py' script wrapping the formatting tools to only retain related
|
||||
changes. This should be used to validate modifications before submitting them
|
||||
for review.
|
||||
|
||||
The script operates on one or multiple git commits specified on the command
|
||||
line. It does not modify the git tree, the index or the working directory and
|
||||
|
@ -393,8 +377,4 @@ diff that fixes the issues, on top of the corresponding commit. As the script is
|
|||
in early development false positive are expected. The flagged issues should be
|
||||
reviewed, but the diff doesn't need to be applied blindly.
|
||||
|
||||
The checkstyle.py script uses clang-format by default if found, and otherwise
|
||||
falls back to astyle. The formatter can be manually selected with the
|
||||
'--formatter' argument.
|
||||
|
||||
Happy hacking, libcamera awaits your patches!
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#
|
||||
# Author: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||
#
|
||||
# checkstyle.py - A patch style checker script based on astyle or clang-format
|
||||
# checkstyle.py - A patch style checker script based on clang-format
|
||||
#
|
||||
# TODO:
|
||||
#
|
||||
|
@ -22,22 +22,8 @@ import shutil
|
|||
import subprocess
|
||||
import sys
|
||||
|
||||
astyle_options = (
|
||||
'-n',
|
||||
'--style=linux',
|
||||
'--indent=force-tab=8',
|
||||
'--attach-namespaces',
|
||||
'--attach-extern-c',
|
||||
'--pad-oper',
|
||||
'--align-pointer=name',
|
||||
'--align-reference=name',
|
||||
'--keep-one-line-blocks',
|
||||
'--max-code-length=120'
|
||||
)
|
||||
|
||||
dependencies = {
|
||||
'astyle': False,
|
||||
'clang-format': False,
|
||||
'clang-format': True,
|
||||
'git': True,
|
||||
}
|
||||
|
||||
|
@ -550,7 +536,6 @@ class ShellChecker(StyleChecker):
|
|||
#
|
||||
|
||||
class Formatter(metaclass=ClassRegistry):
|
||||
enabled = True
|
||||
subclasses = []
|
||||
|
||||
def __init__(self):
|
||||
|
@ -562,15 +547,11 @@ class Formatter(metaclass=ClassRegistry):
|
|||
@classmethod
|
||||
def formatters(cls, filename):
|
||||
for formatter in cls.subclasses:
|
||||
if not cls.enabled:
|
||||
continue
|
||||
if formatter.supports(filename):
|
||||
yield formatter
|
||||
|
||||
@classmethod
|
||||
def supports(cls, filename):
|
||||
if not cls.enabled:
|
||||
return False
|
||||
for pattern in cls.patterns:
|
||||
if fnmatch.fnmatch(os.path.basename(filename), pattern):
|
||||
return True
|
||||
|
@ -580,26 +561,12 @@ class Formatter(metaclass=ClassRegistry):
|
|||
def all_patterns(cls):
|
||||
patterns = set()
|
||||
for formatter in cls.subclasses:
|
||||
if not cls.enabled:
|
||||
continue
|
||||
patterns.update(formatter.patterns)
|
||||
|
||||
return patterns
|
||||
|
||||
|
||||
class AStyleFormatter(Formatter):
|
||||
enabled = False
|
||||
patterns = ('*.c', '*.cpp', '*.h')
|
||||
|
||||
@classmethod
|
||||
def format(cls, filename, data):
|
||||
ret = subprocess.run(['astyle', *astyle_options],
|
||||
input=data.encode('utf-8'), stdout=subprocess.PIPE)
|
||||
return ret.stdout.decode('utf-8')
|
||||
|
||||
|
||||
class CLangFormatter(Formatter):
|
||||
enabled = False
|
||||
patterns = ('*.c', '*.cpp', '*.h')
|
||||
|
||||
@classmethod
|
||||
|
@ -854,8 +821,6 @@ def main(argv):
|
|||
|
||||
# Parse command line arguments
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--formatter', '-f', type=str, choices=['astyle', 'clang-format'],
|
||||
help='Code formatter. Default to clang-format if not specified.')
|
||||
parser.add_argument('--staged', '-s', action='store_true',
|
||||
help='Include the changes in the index. Defaults to False')
|
||||
parser.add_argument('--amend', '-a', action='store_true',
|
||||
|
@ -873,21 +838,6 @@ def main(argv):
|
|||
|
||||
dependencies[command] = found
|
||||
|
||||
if args.formatter:
|
||||
if not args.formatter in dependencies or \
|
||||
not dependencies[args.formatter]:
|
||||
print("Formatter %s not available" % args.formatter)
|
||||
return 1
|
||||
formatter = args.formatter
|
||||
else:
|
||||
if dependencies['clang-format']:
|
||||
CLangFormatter.enabled = True
|
||||
elif dependencies['astyle']:
|
||||
AStyleFormatter.enabled = True
|
||||
else:
|
||||
print("No formatter found, please install clang-format or astyle")
|
||||
return 1
|
||||
|
||||
# Get the top level directory to pass absolute file names to git diff
|
||||
# commands, in order to support execution from subdirectories of the git
|
||||
# tree.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue