[code-quality] Minimal example

Patrik Iselind patrik.mrx at gmail.com
Wed Aug 17 15:37:10 EDT 2016


Thanks, i got it to work now.

I have some feedback on the page you referred to.

I was missing the implements line as well. This was not highlighted at all.

Bullet two concerning priority. How checkers are ordered (internally?) 
doesn't help me to decide if i should set a negative priority close to 
zero or very far from zero in order for the checker to be first or at 
least among the first.

I interpret this page as a resource you'd give programmers new to pylint 
checkers to get them started, awesome start! I think it would be really 
helpful if the page gave a overview of how the AST is buid and how i'm 
meant to access for example function variables in a function or the 
identifiers defined in a module. Where can i find a list of all the 
visit_* methods that i can use? I cannot find any class defining them 
all, are they dynamically called somehow?

In examples directory referred to, looking at custom_raw.py. It 
implements process_module() instead of visit_*. What is the difference? 
When should i choose one over the other?

Thanks a lot for your assistance in getting my first checker running.

// Patrik

Den 2016-08-14 kl. 15:32, skrev Claudiu Popa:
>
>
> On Sat, Aug 13, 2016 at 11:31 AM, mrx <patrik.mrx at gmail.com 
> <mailto:patrik.mrx at gmail.com>> wrote:
>
>     Hi,
>
>     Where can i find a bare minimum pylint checker that will
>     successfully be registered and called?
>
>     I've tried to write a checker like so:
>     $ cat mychecker.py
>     from pylint import checkers
>     import pdb
>
>     class Foo(checkers.BaseChecker):
>
>         name = "FooBar"
>
>         def visit_module(self, node):
>             self.add_message('blaha-name', node=node)
>             pdb.set_trace()
>
>         def visit_importfrom(self, node):
>             self.add_message('foo-name', node=node)
>             pdb.set_trace()
>
>         def visit_import(self, node):
>             self.add_message('bar-name', node=node)
>             pdb.set_trace()
>
>     def register(linter):
>         linter.register_checker(Foo(linter))
>         print "Mychecker registered successfully it seems"
>
>     I get the print from register but neither of my visit_* methods
>     seems to get called, i cannot see why.
>
>     I run it like so:
>     PYTHONPATH=. pylint --load-plugins=mychecker -rn main.py testmodule
>
>     What am i missing?
>
>
>
>
> Hi,
>
> You will have to provide as well the message dictionary that you checker
> is going to emit. I just documented this here:
> https://docs.pylint.org/en/latest/custom_checkers.html#writing-your-own-checker 
>
>
> This part needs more documentation work though, so if you notice
> any other inconsistency, let me know.
>
>
> Claudiu

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/code-quality/attachments/20160817/4073deab/attachment.html>


More information about the code-quality mailing list