util/lint: Add check that changes conform to clang-format style

It's a white list (configured through $(top)/.clang-format-scope) with
the expectation that the list will grow over time.
Once everything is covered, we can turn off the white-listing and keep
everything enforced.

To not drive people crazy, only check the files their commit touched.

Change-Id: I52c7ea73fd36aaa46c0bfce928158e1cd6304540
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Reviewed-on: https://review.coreboot.org/26514
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
Patrick Georgi 2018-05-24 17:36:41 +02:00 committed by Martin Roth
parent ae2cb2d3bf
commit f743728e9f
1 changed files with 34 additions and 0 deletions

34
util/lint/lint-022-clang-format Executable file
View File

@ -0,0 +1,34 @@
#!/bin/sh
# This file is part of the coreboot project.
#
# Copyright (C) 2018 Google Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
#
# DESCR: Run clang-format on white-listed directories
LC_ALL=C export LC_ALL
# until we require this by default, we need a list of opted-in directories
if [ ! -f .clang-format-scope ]; then
exit 0
fi
files_to_check=$(git log HEAD~..HEAD --format= --name-only $(cat .clang-format-scope) |grep "\.[ch]$")
# nothing to do
if [ -z "$files_to_check" ]; then
exit 0
fi
if [ $(clang-format $files_to_check | wc -l) -gt 0 ]; then
git diff HEAD~..HEAD -- $files_to_check | clang-format-diff
fi