[libcamera-devel] [PATCH 8/8] utils: checkstyle.py: Add header add checker
Kieran Bingham
kieran.bingham at ideasonboard.com
Tue Dec 29 15:56:38 CET 2020
Hi Niklas,
On 27/12/2020 10:51, Niklas Söderlund wrote:
> Hi Laurent,
>
> Thanks for the new checker, if only I could create one for my bad
> spelling ;-P
I started one,trying to use the python 'enchant' package, but the
performance was ... absolutely appalling :-(
I look forward to the one you create ;-)
--
Kieran
> On 2020-12-24 14:28:55 +0200, Laurent Pinchart wrote:
>> Add a commit checker that ensures that all header files added to the
>> libcamera includes (public or internal) are accompanied by a
>> corresponding update of the meson.build file in the same directory.
>>
>> Here's the output of the new checker when run against a commit that
>> forgot to update meson.build.
>>
>> $ ./utils/checkstyle.py b3383da79f1d
>> ---------------------------------------------------------------------------------
>> b3383da79f1d513b0d76db220a7104e1c1035e30 libcamera: buffer: Create a MappedBuffer
>> ---------------------------------------------------------------------------------
>> Header include/libcamera/internal/buffer.h added without corresponding update to include/libcamera/internal/meson.build
>> ---
>> 1 potential issue detected, please review
>>
>> In theory we could extend the checker to cover .cpp files too, but the
>> issue will be quite noticeable as meson won't build the file if
>> meson.build isn't updated. Header files are more tricky as problems
>> would only occur at when installing the headers (for public headers), or
>> would result in race conditions in the build. Both of those issues are
>> harder to catch.
>>
>> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
>
> Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
>
>> ---
>> utils/checkstyle.py | 44 ++++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 44 insertions(+)
>>
>> diff --git a/utils/checkstyle.py b/utils/checkstyle.py
>> index c0a6b7ab06cd..e618db937c2b 100755
>> --- a/utils/checkstyle.py
>> +++ b/utils/checkstyle.py
>> @@ -320,6 +320,50 @@ class CommitIssue(object):
>> self.msg = msg
>>
>>
>> +class HeaderAddChecker(CommitChecker):
>> + @classmethod
>> + def check(cls, commit, top_level):
>> + issues = []
>> +
>> + meson_files = [f for f in commit.files('M')
>> + if os.path.basename(f) == 'meson.build']
>> +
>> + for filename in commit.files('A'):
>> + if not filename.startswith('include/libcamera/') or \
>> + not filename.endswith('.h'):
>> + continue
>> +
>> + meson = os.path.dirname(filename) + '/meson.build'
>> + header = os.path.basename(filename)
>> +
>> + issue = CommitIssue('Header %s added without corresponding update to %s' %
>> + (filename, meson))
>> +
>> + if meson not in meson_files:
>> + issues.append(issue)
>> + continue
>> +
>> + diff = commit.get_diff(top_level, meson)
>> + found = False
>> +
>> + for hunk in diff:
>> + for line in hunk.lines:
>> + if line[0] != '+':
>> + continue
>> +
>> + if line.find("'%s'" % header) != -1:
>> + found = True
>> + break
>> +
>> + if found:
>> + break
>> +
>> + if not found:
>> + issues.append(issue)
>> +
>> + return issues
>> +
>> +
>> # ------------------------------------------------------------------------------
>> # Style Checkers
>> #
>> --
>> Regards,
>>
>> Laurent Pinchart
>>
>> _______________________________________________
>> libcamera-devel mailing list
>> libcamera-devel at lists.libcamera.org
>> https://lists.libcamera.org/listinfo/libcamera-devel
>
--
Regards
--
Kieran
More information about the libcamera-devel
mailing list