Re: [Codenarc-user] Writing CodeNarc rules
Brought to you by:
chrismair
|
From: <AGo...@cf...> - 2016-09-08 20:56:41
|
Yes, I did see the screencast, and it is nice as far as it goes.
I was trying to get the rule written as a Groovy script to work for me as
it seemed easier to play around with things that way. I used the
MyStaticFieldRule example as the basis to get that working. The piece that
was missing in the documentation to make that easy was how to reference
the script as a rule. After a while googling I ended up with something
that worked and my ruleSet.groovy file looked like this.
ruleset {
description '''
A Sample Groovy RuleSet containing all CodeNarc Rules
You can use this as a template for your own custom RuleSet.
Just delete the rules that you don't want to include.
'''
rule('file:scripts/codenarc/play/MyStaticFieldRule.groovy')
}
The file path is relative to my Grails project root so that running
"grails codenarc" finds it.
I then got stuck on the AST paradigm but hopefully I have enough to move
forward with now.
Thanks for the help!
From: "Hamlet D'Arcy" <ham...@gm...>
To: AGo...@cf...
Cc: cod...@li...
Date: 09/07/2016 10:30 AM
Subject: Re: [Codenarc-user] Writing CodeNarc rules
Did you see the screencast? :)
https://www.youtube.com/watch?v=ZPu8FaZZwRw
On Wed, Sep 7, 2016 at 12:32 AM, <AGo...@cf...> wrote:
Thanks Hamlet! That should be very helpful. Thanks also to Chris Mair who
had some helpful suggestions.
I will hope to get a chance to try them both out; still digging out after
a week off. Once I get back to this I will report back.
Thanks again!
-Andrew Goodspeed
From: "Hamlet D'Arcy" <ham...@gm...>
To: AGo...@cf...
Cc: cod...@li...
Date: 09/01/2016 09:24 AM
Subject: Re: [Codenarc-user] Writing CodeNarc rules
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...> 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.
classMyTestAstVisitor extendsAbstractMethodVisitor {
@Override
voidvisitMethod(MethodNode methodNode) {
if(Modifier.isPublic(methodNode.modifiers)) {
if(AstUtil.isEmptyBlock(methodNode.code)) {
addViolation(methodNode, "Action ${methodNode.name} in ${
currentClassName} is empty")
} else{
deftryCatchStatement = methodNode.firstStatement
if(!(tryCatchStatement instanceofTryCatchStatement)) {
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...
https://lists.sourceforge.net/lists/listinfo/codenarc-user
--
Hamlet D'Arcy
ham...@gm...
------------------------------------------------------------------------------
_______________________________________________
Codenarc-user mailing list
Cod...@li...
https://lists.sourceforge.net/lists/listinfo/codenarc-user
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...
https://lists.sourceforge.net/lists/listinfo/codenarc-user
--
Hamlet D'Arcy
ham...@gm...
------------------------------------------------------------------------------
_______________________________________________
Codenarc-user mailing list
Cod...@li...
https://lists.sourceforge.net/lists/listinfo/codenarc-user
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.
|