[libcamera-devel] [PATCH 1/2] utils: checkstyle: Add formatter to sort #include statements
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Sun Mar 22 13:02:24 CET 2020
Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
utils/checkstyle.py | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/utils/checkstyle.py b/utils/checkstyle.py
index 0827a1e6ba0f..5fd63f047781 100755
--- a/utils/checkstyle.py
+++ b/utils/checkstyle.py
@@ -481,6 +481,39 @@ class DoxygenFormatter(Formatter):
return '\n'.join(lines)
+class IncludeOrderFormatter(Formatter):
+ patterns = ('*.cpp', '*.h')
+
+ include_regex = re.compile('^#include ["<]([^">]*)[">]')
+
+ @classmethod
+ def format(cls, filename, data):
+ lines = []
+ includes = []
+
+ for line in data.split('\n'):
+ match = IncludeOrderFormatter.include_regex.match(line)
+ if match:
+ includes.append((line, match.group(1)))
+ continue
+
+ if len(includes):
+ includes.sort(key=lambda i: i[1])
+ for include in includes:
+ lines.append(include[0])
+ includes = []
+
+ lines.append(line)
+
+ if len(includes):
+ includes.sort(key=lambda i: i[1])
+ for include in includes:
+ lines.append(include[0])
+ includes = []
+
+ return '\n'.join(lines)
+
+
class StripTrailingSpaceFormatter(Formatter):
patterns = ('*.c', '*.cpp', '*.h', '*.py', 'meson.build')
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list