+1 I even thought this was already on (at some point). On Tue, Jan 8, 2019 at 8:01 AM Scott Wegner <sc...@apache.org> wrote:
> I would even propose applying this to non-public methods, but I suspect > that would be more controversial. > I also would support this. It will improve code quality as well. Often missing doc means something is not well thought-out. It often also indicates a misguided attempt to "share code" without sharing a clear concept. I share Robert's concern for random victims hitting the policy when a > method grows from N-1 to N lines. This can easily happen with automatic > refactoring + spotless code formatting. For example, renaming a variable to > a longer name can introduce new line-breaks. But, I'm think code > documentation is valuable enough that it's still worth it. > Another perspective is that someone is getting away with missing documentation at N-1. Seems OK. But maybe just allowMissingPropertyJavadoc (from http://checkstyle.sourceforge.net/config_javadoc.html#JavadocMethod)? We can also configure allowedAnnotations but if you are going to go through the trouble of annotating something, a javadoc comment is just as easy. I want to caveat this: I am strongly opposed to any requirements on the contents of the javadoc, which is almost all the time redundant bloat if the description is at all adequate. Kenn > On Tue, Jan 8, 2019 at 4:03 AM Robert Bradshaw <rober...@google.com> > wrote: > >> With the clarification that we're looking at the intersection of >> public + "big", I think this is a great idea. We should make it clear >> that this is a lower bar--many private or shorter methods merit >> documentation as well (but that's harder to automatically detect). The >> one difficulty with a threshold is that it's painful for the person >> who does some refactoring or other minor work and turns the (say) >> 29-line method into a 30-line one. This is a case where as suppression >> annotation (appropriately used) could be useful. >> >> On Tue, Jan 8, 2019 at 1:49 AM Daniel Oliveira <danolive...@google.com> >> wrote: >> > >> > +1 >> > >> > I like this idea, especially with the line number requirement. The >> exact number of lines is debatable, but you could go as low as 10 lines and >> that would exclude any trivial setters and getters. Even better might be if >> it's possible to configure checkstyle to ignore this for getters and >> setters (I don't know if checkstyle supports this, but I know that other >> tools are able to auto-detect getters and setters). >> > >> > I'm not dead-set against having annotation to suppress the comment, but >> it carries the risk that code will be left un-commented because both the >> dev and reviewer think it's self-explanatory, and then someone new to the >> codebase finds it confusing. >> > >> > On Mon, Jan 7, 2019 at 11:31 AM Ankur Goenka <goe...@google.com> wrote: >> >> >> >> I think it makes sense. >> >> Having an annotation to suppress this check for a method/class instead >> of adding trivial comment would be useful. >> >> >> >> On Mon, Jan 7, 2019 at 9:53 AM Ruoyun Huang <ruo...@google.com> wrote: >> >>> >> >>> Yeah. Agree there is no reason to enforce anything for trivial >> methods like setter/getter. >> >>> >> >>> What I meant is to enforce only for a method that is BOTH 1) public >> method 2) has longer than N lines. >> >>> >> >>> sorry for not making the proposal clear enough in the original >> message, it should've better titled "enforce ... on non-trivial public >> methods". >> >>> >> >>> >> >>> >> >>> On Mon, Jan 7, 2019 at 1:31 AM Robert Bradshaw <rober...@google.com> >> wrote: >> >>>> >> >>>> IMHO, requiring comments on trivial methods like setters and getters >> >>>> is often a net negative, but setting some standard could be useful. >> >>>> >> >>>> On Mon, Jan 7, 2019 at 7:35 AM Jean-Baptiste Onofré <j...@nanthrax.net> >> wrote: >> >>>> > >> >>>> > Hi, >> >>>> > >> >>>> > for the presence of a comment on public method, it's a good idea. >> Now, >> >>>> > about the number of lines, not sure it's a good idea. I'm thinking >> about >> >>>> > the getter/setter which are public. Most of the time, the comment >> is >> >>>> > pretty simple (and useless ;)). >> >>>> > >> >>>> > Regards >> >>>> > JB >> >>>> > >> >>>> > On 07/01/2019 04:35, Ruoyun Huang wrote: >> >>>> > > Hi, everyone, >> >>>> > > >> >>>> > > >> >>>> > > We were wondering whether it is a good idea to make >> checkstyle >> >>>> > > enforce public method comments. Our current behavior of JavaDoc >> check is: >> >>>> > > >> >>>> > > 1. >> >>>> > > >> >>>> > > Missing Class javadoc comment is reported as error. >> >>>> > > >> >>>> > > 2. >> >>>> > > >> >>>> > > Method comment missing is explicitly allowed. see [1]. It >> is not >> >>>> > > even shown as warning. >> >>>> > > >> >>>> > > 3. >> >>>> > > >> >>>> > > The actual javadoc target gives warning when certain tags are >> >>>> > > missing in javadoc, but not if the whole comment is missing. >> >>>> > > >> >>>> > > >> >>>> > > How about we enforce method comments for **1) public method >> and 2) >> >>>> > > method that is longer than N lines**. (N=~30 seems a good number, >> >>>> > > leading to ~50 violations in current repository). I can find out >> the >> >>>> > > corresponding contributors to fill in the missing comments, >> before we >> >>>> > > turning the check fully on. >> >>>> > > >> >>>> > > >> >>>> > > One caveat though is that we might want skip this check on >> test code, >> >>>> > > but I am not sure yet if our current setup can easily handle >> separated >> >>>> > > rules for main code versus test code. >> >>>> > > >> >>>> > > >> >>>> > > Is this a good idea? Thoughts and suggestions? >> >>>> > > >> >>>> > > >> >>>> > > [1] >> >>>> > > >> https://github.com/apache/beam/blame/5ceffb246c0c38ad68dd208e951a1f39c90ef85c/sdks/java/build-tools/src/main/resources/beam/checkstyle.xml#L111 >> >>>> > > >> >>>> > > >> >>>> > > Cheers, >> >>>> > > >> >>>> > >> >>>> > -- >> >>>> > Jean-Baptiste Onofré >> >>>> > jbono...@apache.org >> >>>> > http://blog.nanthrax.net >> >>>> > Talend - http://www.talend.com >> >>> >> >>> >> >>> >> >>> -- >> >>> ================ >> >>> Ruoyun Huang >> >>> >> > > > -- > > > > > Got feedback? tinyurl.com/swegner-feedback >