Re: [Codenarc-user] Writing CodeNarc rules
Brought to you by:
chrismair
From: Roshan D. <ros...@gm...> - 2016-09-02 01:23:06
|
Great, good to see you back in action! On Friday 2 September 2016, Hamlet D'Arcy <ham...@gm...> wrote: > I'm still alive! > > I work at Microsoft now but still in Switzerland. > > If anyone out there is using TypeScript then be sure to check out all my > TypeScript linting rules. It's even an official Microsoft git repo :) > https://github.com/Microsoft/tslint-microsoft-contrib > > I don't know.... there is just something about writing linting rules that > makes me happy :) > > > > On Thu, Sep 1, 2016 at 3:32 PM, Roshan Dawrani <ros...@gm... > <javascript:_e(%7B%7D,'cvml','ros...@gm...');>> wrote: > >> Aha! What a pleasant surprise to see a mail from you again. Long time, >> Hamlet! >> >> On Thu, Sep 1, 2016 at 6:52 PM, Hamlet D'Arcy <ham...@gm... >> <javascript:_e(%7B%7D,'cvml','ham...@gm...');>> wrote: >> >>> Not sure if you ever got an answer to this... >>> >>> Here is the latest Javadoc for MethodNode: http://docs.groovy >>> -lang.org/latest/html/api/org/codehaus/groovy/ast/MethodNode.html >>> >>> A MethodNode only ever has one Statement! so if your Method has only a >>> TryCatchStatement then you know nothing follows it. >>> If your method has-a BlockStatement then your method will be several >>> statements long. >>> >>> The best way to explore is to write more unit tests and just look and >>> see what is in the AST! >>> >>> On Thu, Aug 18, 2016 at 9:18 PM, <AGo...@cf... >>> <javascript:_e(%7B%7D,'cvml','AGo...@cf...');>> wrote: >>> >>>> Hello all. >>>> >>>> I am trying to write a CodeNarc rule and am struggling with just how to >>>> use the AST code visitor support (or anything else) to get were I want to >>>> go. Does anyone know of a resource that might be helpful and/or give me >>>> some firsthand assistance? I have looked at all of the obvious ones from >>>> the CodeNarc site as well as the distributed rules, google searches, etc. >>>> >>>> I am trying to write a rule that checks to make sure the body of >>>> particular methods consists entirely of a try/catch block where Exception >>>> is caught. I have gotten as far as verifying the first statement in the >>>> method is a try/catch statement using an AbstractMethodVisitor but am >>>> struggling a bit in figuring out how to make sure there is no statement >>>> following it in the method. >>>> >>>> This is where I am on my astVisitorClass. >>>> >>>> *class*MyTestAstVisitor *extends*AbstractMethodVisitor { >>>> @Override >>>> *void*visitMethod(MethodNode methodNode) { >>>> *if*(Modifier.*isPublic*(methodNode.modifiers)) { >>>> *if*(AstUtil.*isEmptyBlock*(methodNode.code)) { >>>> addViolation(methodNode, "Action ${methodNode.name} in >>>> ${currentClassName} is empty") >>>> } *else*{ >>>> *def*tryCatchStatement = methodNode.firstStatement >>>> *if*(!(tryCatchStatement *instanceof*TryCatchStatement)) >>>> { >>>> addViolation(methodNode, "First statement of >>>> action ${methodNode.name} in ${currentClassName} is >>>> ${tryCatchStatement.class.name}") >>>> } *else*{ >>>> // try/catch statement, but nothing more? >>>> } >>>> } >>>> } >>>> } >>>> } >>>> >>>> I am running with CodeNarc 0.22 and Grails 2.2.4/Groovy 2.0.8. >>>> >>>> Thanks for any insight. >>>> >>>> -Andrew Goodspeed >>>> NOTICE: This message and all attachments transmitted with it may >>>> contain sensitive and/or confidential information intended solely for the >>>> use of the addressee. If the reader of this message is not the intended >>>> recipient, you are hereby notified that any reading, dissemination, >>>> distribution, copying, or other use of this message or its attachments is >>>> strictly prohibited. If you have received this message in error, please >>>> notify the sender immediately and delete this message and all copies and >>>> backups thereof. If you choose to communicate with us by email, you should >>>> be aware that the security of incoming Internet email is not secure. We >>>> strongly encourage you to use encrypted email when sending sensitive and/or >>>> confidential information. By sending sensitive or confidential email >>>> messages that are not encrypted, you accept the risks of such lack of >>>> security and possible lack of confidentiality. If you elect to communicate >>>> from your workplace computer, you also should be aware that your employer >>>> and its agents have access to email communications between you and us. >>>> >>>> ------------------------------------------------------------ >>>> ------------------ >>>> >>>> _______________________________________________ >>>> Codenarc-user mailing list >>>> Cod...@li... >>>> <javascript:_e(%7B%7D,'cvml','Cod...@li...');> >>>> https://lists.sourceforge.net/lists/listinfo/codenarc-user >>>> >>>> >>> >>> >>> -- >>> Hamlet D'Arcy >>> ham...@gm... >>> <javascript:_e(%7B%7D,'cvml','ham...@gm...');> >>> >>> ------------------------------------------------------------ >>> ------------------ >>> >>> _______________________________________________ >>> Codenarc-user mailing list >>> Cod...@li... >>> <javascript:_e(%7B%7D,'cvml','Cod...@li...');> >>> https://lists.sourceforge.net/lists/listinfo/codenarc-user >>> >>> >> > > > -- > Hamlet D'Arcy > ham...@gm... <javascript:_e(%7B%7D,'cvml','ham...@gm...');> > |