I object to this process. The question I raised is about 2 existing codestyle rules which we currently break the build over. I would like them removed and I made an argument why neither of them is defensible. In addition I believe we *should* break the build over a third rule which is not currently existing but I feel I have a justification for it.
I think you've hijacked the thread by replacing the simple question of whether these three policies are justifiable with a question of whether technology Y is a better fit for our needs than technology X. If you feel that changing build/validation technology is important, I invite you to begin a mail thread and I promise I won't hijack the discussion with talk about software licenses, programming languages or whathaveyou. Thanks, Caleb On 09/12/2014 06:38 PM, [email protected] wrote: > Hi, > > I haven’t had time to read this thread yet. Very generally: > - checkstyle is a dead tool > - the sonar guys have been reimplementing the rules in a better way > - sonar offers more rules (pmd, findbugs, etc) > - I’ve started defining rules we may want to use in this email thread: > http://xwiki.markmail.org/thread/vnggoomrbqbfaojn > - I’ve already excluded rules, listed on > http://design.xwiki.org/xwiki/bin/view/Proposal/DefineSonarRules > - One next step is to look at http://sonar.xwiki.org to see the remaining > violations and decide which one we want to remove > - Another step will be to decide to use the sonar maven plugin to act as a > replacement for the checkstyle maven plugin and fail the build in case of > errors > - The list of currently enabled rules are available here: > http://sonar.xwiki.org/coding_rules#qprofile=java-xwiki-57409|activation=true|languages=java|s=createdAt|asc=false > > Thanks > -Vincent > > On 12 Sep 2014 at 18:27:50, Sergiu Dumitriu > ([email protected](mailto:[email protected])) wrote: > >> I've been working on and off on updating our usage of Checkstyle, since >> we haven't really updated our checkstyle configuration since we first >> started using it, other than minor tweaks. In the latest version of the >> Checkstyle tool several useful checks have been added, which I'd like to >> enable. >> >> On 09/12/2014 04:15 AM, Caleb James DeLisle wrote: >>> Hi all, >>> >>> This is partially an extension of the previous mail thread >>> ``Checkstyle audit audit'' where in the discussion, I formed a few thoughts >>> about checkstyle rules which should be added and removed. Since that thread >>> is very cluttered now, I wanted to begin a new one specifically explaining >>> the changes which I think we should make. Comments are requested. >>> >>> >>> All but the most trivial Codestyle rules all create friction which slows >>> down >>> work. They are however valuable because they identify likely mistakes and >>> make >>> it easier for others to read one's code. Still we must periodically review >>> our >>> rules and identify both new rules which can help us and existing rules which >>> are more bother than they are help, either in general or in specific to the >>> experience level of our team. >>> >>> >>> Changes I would like to make: >>> >>> #1: Remove "duplicate strings" checkstyle rule. This rule is supposed to >>> trap >>> people who are hardcoding constants throughout their code instead of >>> defining >>> them in one place. However when writing this email, I tried to find a >>> coherent >>> example which is much improved by hoisting the string value up into a >>> constant >>> and I cannot think of a single example. False positive examples spring to >>> mind >>> immediately, usually log/error messages or on strings which are sure never >>> to >>> change (at least not before the next major refactoring). "fixing" these >>> errors >>> makes the code worse because one can no-longer read top to bottom, one must >>> scroll up and down between constants and code. I think this rule is more >>> harm >>> than good, especially for our team's experience level. >> >> +0 on this one, it's an extra safety net, but one that I agree is a bit >> too cumbersome, and I'm not a big fan of defining private constants just >> to work around this rule. >> >>> #2: Set class/method/field javadoc requirement to exempt private and package >>> private entities. When I write code, I want to do everything the easiest way >>> that could work. When I read code, I want every comment to be giving me >>> important and up-to-date information. If checkstyle makes me write comments >>> which teach programming, I'm going to be mad at checkstyle, if I try to >>> debug >>> your code and the important details/warnings are mixed in with a rash of >>> CS-101 >>> babble, I'm going to be mad at you. In either case it takes me longer to do >>> what I set out to do. >>> The solution of requiring javadoc only on public classes/interfaces also >>> helps >>> me when developing because I need to think more deeply about the interfaces >>> which I am exposing to the world. "write javadoc here" or >>> "this needs an @param tag" implies >>> "hey, did you really intend to make that public API?". >>> I think the change not only lifts the burden on the programmer but also >>> actually helps checkstyle achieve it's goals more efficiently. >> >> +1. All public code should be thoroughly documented, and private code >> should only document what's not obvious. >> >>> #3: Add rule requiring use of 'this.' when accessing class fields and remove >>> rule preventing variable names which shadow fields. This change makes >>> checkstyle >>> *more* strict but I believe the cost is reasonable and the benefit is high. >>> Reading your code I immediately know whether you're accessing a field or a >>> variable which tells me whether there is reason why your function might >>> behave >>> differently depending on the state of the object. In light of this change, >>> there is nolonger any reason to concern ourselves with shadowing of field >>> names since we cannot access them this way so I think the new rule should >>> be accompanied by the removal of the shadowing rule. >> >> +1, but there's currently a bug in that rule: >> https://github.com/checkstyle/checkstyle/pull/274 >> >> More rules to enable in https://github.com/xwiki/xwiki-commons/pull/9 >> >> -- >> Sergiu Dumitriu >> http://purl.org/net/sergiu >> _______________________________________________ >> devs mailing list >> [email protected] >> http://lists.xwiki.org/mailman/listinfo/devs > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

