Mailinglist Archive: yast-devel (63 mails)

< Previous Next >
[yast-devel] Rubocop vs Zombies
No, it's not a movie (yet).

What
----

As you know, Zombie Killer aims to replace Ops and Builtins in the
code converted from YCP, automatically and safely:
https://github.com/yast/zombie-killer

Lada recently introduced Rubocop, which can detect a lot of style
issues or even bugs, and autocorrect some of them. We have enabled
it in Travis for some repositores already:
http://lists.opensuse.org/yast-devel/2014-11/msg00066.html

Obviously there are similarities between these projects, and
luckily, both are based on the same parser library. So Lada has
made a prototype of a YaST specific Rubocop plugin, which
incorporates big parts of Zombie Killer:
https://github.com/yast/rubocop-yast

How
---

Today we have discussed how to go forward with these.

1. Port Zombie Killer to Rubocop.
Rubocop is a well working platform matching closely the aims
and even the implementation of ZK.

2. Apply it continuously.
Unlike with the switch from YCP, there is no reason to wait for
the Zombie Cop to be "complete". We want to implement small
features and apply them piece by piece.

3. Distinguish Strict and Tolerant modes.
For newly written libraries we want to treat all zombies as
offenses but for code converted from YCP we want to convert the
ones which are safe to do so and shut up about the rest.

4. Package as a gem only.
So far we do not see a need to build a RPM. The package will run
in Travis, not in OBS.

5. Measure and present the effects.
To make sure that we spend effort effectively, we will produce
statistics of zombie counts and their evolution across time, for
individual repos and all of YaST. (A simple extension will enable
us to get the code quality graphs we currently have on CodeClimate,
but for a longer span than one month.)
https://codeclimate.com/github/yast/yast-bootloader/trends
https://github.com/mvidner/metrics

6. Apply to individual repositores, not across all of YaST??

We are not so confident about (6) and want your opinion about this.

Applying a new Zombie Cop across all of YaST has the benefit of
generally having more of clean code. The usual maintainer (if any)
of that repo does not have to care.

On the other hand, some cops,like the logging one, may be a bit
aggressive and require fixups to the old tests. There may even be
bugs, and those could go unnoticed for a long time for little used
and tested modules.

So we think it is more appropriate to apply the Zombie Cops (or any
cops, actually) only when touching a module for another reason. You
will object that it may result of many code changes, which is hard
to review. But that is solved by having separate cops for each kind
of change, and applying them one per each commit.

Next
----

Port all of the current Zombie Killer to a Rubocop plugin, including
the tests.

--
Martin Vidner, Cloud & Systems Management Team
http://en.opensuse.org/User:Mvidner

Kuracke oddeleni v restauraci je jako fekalni oddeleni v bazenu
< Previous Next >
Follow Ups