[libcamera-devel] [PATCH v2] utils: checkstyle.py: Add pep8 checker

Kieran Bingham kieran.bingham at ideasonboard.com
Thu Jul 4 22:52:46 CEST 2019


Hi Laurent,

On 04/07/2019 21:24, Laurent Pinchart wrote:
> Hi Kieran,
> 
> Thank you for the patch.
> 
> On Thu, Jul 04, 2019 at 04:06:58PM +0100, Kieran Bingham wrote:
>> Process python additions with pep8 and report any errors that are added.
>>
>> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
>>
>> --
> 
> This should be --- to be stripped by git am. Don't forget to remove it
> before pushing in any case :-)
> 
>> v2:
>>  - Now catches if pep8 is not available
>>  - line_no_regex renamed to results_regex and contained in Pep8Checker
>>    class
>>  - Single quotes used instead of double quotes
>>  - 'data' moved to local variable instance of class instance
>> ---
>>  utils/checkstyle.py | 33 +++++++++++++++++++++++++++++++++
>>  1 file changed, 33 insertions(+)
>>
>> diff --git a/utils/checkstyle.py b/utils/checkstyle.py
>> index fab4b116d2ff..c5ecdc12112b 100755
>> --- a/utils/checkstyle.py
>> +++ b/utils/checkstyle.py
>> @@ -276,6 +276,39 @@ class MesonChecker(StyleChecker):
>>          return issues
>>  
>>  
>> +class Pep8Checker(StyleChecker):
>> +    patterns = ('*.py',)
>> +    results_regex = re.compile('stdin:([0-9]+):([0-9]+)(.*)')
>> +
>> +    def __init__(self, content):
>> +        super().__init__()
>> +        self.__content = content
>> +
>> +    def check(self, line_numbers):
>> +        issues = []
>> +        data = ''.join(self.__content).encode('utf-8')
>> +
>> +        try:
>> +            ret = subprocess.run(['pep8', '--ignore=E501', '-'],
>> +                                 input=data, stdout=subprocess.PIPE)
>> +        except FileNotFoundError:
>> +            issues.append(StyleIssue(0, '', "Please install pep8 to validate python additions"))
>> +            return issues
>> +
>> +        results = ret.stdout.decode('utf-8').splitlines()
>> +        for item in results:
>> +            search = re.search(Pep8Checker.results_regex, item)
>> +            line_number = int(search.group(1))
>> +            position = int(search.group(2))
>> +            msg = search.group(3)
>> +
>> +            if line_number in line_numbers:
>> +                line = self.__content[line_number - 1]
>> +                issues.append(StyleIssue(line_number, line, msg))
>> +
>> +        return issues
>> +
>> +
> 
> This looks good to me. It however prints an empty line below the
> message when pep8 isn't installed. How about squashing the following
> change in ?
> 
> diff --git a/utils/checkstyle.py b/utils/checkstyle.py
> index c5ecdc12112b..42a96f6d6102 100755
> --- a/utils/checkstyle.py
> +++ b/utils/checkstyle.py
> @@ -292,7 +292,7 @@ class Pep8Checker(StyleChecker):
>              ret = subprocess.run(['pep8', '--ignore=E501', '-'],
>                                   input=data, stdout=subprocess.PIPE)
>          except FileNotFoundError:
> -            issues.append(StyleIssue(0, '', "Please install pep8 to validate python additions"))
> +            issues.append(StyleIssue(0, None, "Please install pep8 to validate python additions"))
>              return issues
> 
>          results = ret.stdout.decode('utf-8').splitlines()
> @@ -483,7 +483,8 @@ def check_file(top_level, commit, filename):
>          issues = sorted(issues, key=lambda i: i.line_number)
>          for issue in issues:
>              print('%s#%u: %s' % (Colours.fg(Colours.Yellow), issue.line_number, issue.msg))
> -            print('+%s%s' % (issue.line.rstrip(), Colours.reset()))
> +            if issue.line is not None:
> +                print('+%s%s' % (issue.line.rstrip(), Colours.reset()))
> 
>      return len(formatted_diff) + len(issues)
>  
> 
> With that,
> 
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

I've tested your change, and it works fine.

Pushed with your changes
--
Kieran


> 
>>  # ------------------------------------------------------------------------------
>>  # Formatters
>>  #
> 

-- 
Regards
--
Kieran


More information about the libcamera-devel mailing list