<div dir="ltr">Seems I have 10% time that I can allocate to something like that. That would be a good way to get my hands dirty with continuous integration...<div><br></div><div>I'll see if there is something I can do...</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 11, 2016 at 6:05 PM, Antoine Musso <span dir="ltr"><<a href="mailto:hashar+wmf@free.fr" target="_blank">hashar+wmf@free.fr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello Guillaume,<br>
<br>
I myself have no spare cycles to even look at SonarQube.  Seems it needs<br>
a local client to collect informations and a server to process the<br>
gather data which report back.<br>
<br>
Maybe a proof of concept can be setup on wmflabs ?  If it can prove to<br>
be any helpful for Puppet or other repository, I am all for it.<br>
<br>
cheers,<br>
<br>
--<br>
Antoine Musso<br>
<span class=""><br>
Le 05/02/2016 19:40, Guillaume Lederrey a écrit :<br>
> Message below cross posted<br>
> from <a href="mailto:ops@lists.wikimedia.org">ops@lists.wikimedia.org</a><br>
</span>> <mailto:<a href="mailto:ops@lists.wikimedia.org">ops@lists.wikimedia.org</a>>.<br>
<span class="">><br>
> Seems that the discussion might be interesting to QA team as well.<br>
><br>
> ---------- Forwarded message ----------<br>
</span><span class="">> From: *Guillaume Lederrey*<br>
> <<a href="mailto:glederrey@wikimedia.org">glederrey@wikimedia.org</a><br>
> <mailto:<a href="mailto:glederrey@wikimedia.org">glederrey@wikimedia.org</a>>><br>
> Date: Fri, Feb 5, 2016 at 10:43 AM<br>
> Subject: SonarQube and Puppet<br>
> To: <a href="mailto:ops@lists.wikimedia.org">ops@lists.wikimedia.org</a><br>
</span><span class="">> <mailto:<a href="mailto:ops@lists.wikimedia.org">ops@lists.wikimedia.org</a>><br>
> Cc: David Racodon <<a href="mailto:david.racodon@gmail.com">david.racodon@gmail.com</a><br>
</span><div><div class="h5">> <mailto:<a href="mailto:david.racodon@gmail.com">david.racodon@gmail.com</a>>><br>
><br>
><br>
> Hello all !<br>
><br>
> Since I'm fairly new here, I still have a few idea coming from my former<br>
> life. Time to expose some of them before I forget them...<br>
><br>
> While trying to familiarize myself a bit with our Puppet code base, I<br>
> did run a SonarQube analysis on it. And I remembered having a few<br>
> discussion about SonarQube during my interview process. So, short<br>
> presentation:<br>
><br>
> SonarQube is an amazing project to manage code quality. It supports a<br>
> long list of languages, from Java to PHP, from Cobol to ABAP. And of<br>
> course Puppet [1] (even if that support is still a bit young).<br>
><br>
> First things first, how to try it? Of course, docker [2] is our friend<br>
> (tested myself with v4.5.6). Or David Racodon has a simple package [3]<br>
> to test the puppet support.<br>
><br>
><br>
> **Why do we need SonarQube, we already have puppet-lint, rspec-puppet,<br>
> cucumber-puppet, ...**<br>
><br>
> 1) SonarQube rules go a bit further than puppet-lint. For example the<br>
> DuplicateHashKeys rule [4] has no equivalent in puppet-lint and a few<br>
> violations on our code base that are clear indication of a problem. Note<br>
> that all puppet-lint rules have been re implemented in the SonarQube<br>
> plugin. Rules about code complexity, code duplication and quite a few<br>
> other metrics are also available.<br>
><br>
> 2) Holistic view of code quality (yes, I know, big words). SonarQube web<br>
> interface provides a good way to compare quality of projects, to dig<br>
> into specific issues, keep track of evolution over time. Much richer<br>
> than a build time check that either pass or fail.<br>
><br>
> 3) Actually help you improve. A binary check like puppet-lint (or other<br>
> similar tools) gives you a very simple feedback, you're good or you're<br>
> not. Reality is usually more complex. We have existing code base which<br>
> have a history. We might not want to fix all issues right now (after<br>
> all, our current code is in production, so it is probably mostly good<br>
> enough) but we want to improve on the long term. We want to introduce<br>
> new checks, higher quality standards, but not stop everything while we<br>
> are improving our standards. SonarQube gives us "quality gates", where<br>
> we define rules about what is good enough. And those rules can be<br>
> differential. For example: "quality gate passes if the commit does not<br>
> introduce any new issue (I don't care about existing issues)".<br>
><br>
><br>
> **Do we need SonarQube at WMF**<br>
><br>
> Honestly, I don't know enough about how we manage Puppet (or other code)<br>
> to have an opinion on this (yet). I have not seen anything scary in my<br>
> code analysis. You tell me...<br>
><br>
><br>
> **Disclaimer**<br>
><br>
> I have worked with David (the author of the Puppet plugin for SonarQube)<br>
> for some time. He has convinced me, perverted me and all those things<br>
> about code quality. Beside being a Nice Guy (tm) he is Pretty Smart (c)<br>
> and knows SonarQube fairly well. He might be available for a chat if<br>
> anyone is interested.<br>
><br>
><br>
> **Note on testing on Docker**<br>
><br>
> The Docker image provided by SonarQube only contains a minimal set of<br>
> plugins. To add Puppet support, go to the web interface<br>
> (<a href="https://localhost:9000" rel="noreferrer" target="_blank">https://localhost:9000</a>, user: admin, pwd: admin) look for the update<br>
> center and add the Puppet plugin. Restart required. You'll need to<br>
> install sonar-runner [5] locally.<br>
><br>
><br>
><br>
> [1] <a href="https://github.com/iwarapter/sonar-puppet" rel="noreferrer" target="_blank">https://github.com/iwarapter/sonar-puppet</a><br>
> [2] <a href="https://hub.docker.com/_/sonarqube/" rel="noreferrer" target="_blank">https://hub.docker.com/_/sonarqube/</a><br>
> [3] <a href="https://github.com/racodond/package-test-sonarqube-puppet" rel="noreferrer" target="_blank">https://github.com/racodond/package-test-sonarqube-puppet</a><br>
> [4] <a href="https://github.com/iwarapter/sonar-puppet/blob/master/puppet-checks/src/main/resources/org/sonar/l10n/pp/rules/puppet/DuplicatedHashKeys.html" rel="noreferrer" target="_blank">https://github.com/iwarapter/sonar-puppet/blob/master/puppet-checks/src/main/resources/org/sonar/l10n/pp/rules/puppet/DuplicatedHashKeys.html</a><br>
> [5] <a href="http://central.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.4/sonar-runner-dist-2.4.zip" rel="noreferrer" target="_blank">http://central.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.4/sonar-runner-dist-2.4.zip</a><br>
><br>
<br>
<br>
</div></div>_______________________________________________<br>
QA mailing list<br>
<a href="mailto:QA@lists.wikimedia.org">QA@lists.wikimedia.org</a><br>
<a href="https://lists.wikimedia.org/mailman/listinfo/qa" rel="noreferrer" target="_blank">https://lists.wikimedia.org/mailman/listinfo/qa</a><br>
</blockquote></div><br></div>