4 ms·
https://github.com/baweaver/refactor#why-not-rubocop https://github.com/baweaver/refactor#why-not-rubocop Deflects the obvious without a cogent explanation bec
by hi-v-rocknroll 2y ago
https://github.com/baweaver/refactor#why-not-rubocop https://github.com/baweaver/refactor#why-not-rubocop
Deflects the obvious without a cogent explanation because Rubocop's S-expressions are sufficiently powerful and general, already work, and don't require reinventing the wheel.
- kelseydh 2y agoI find Rubocop extremely over-opinionated and enforcing style conventions I actually disagree with. You can disable rubocop rules, but as far I know you can't specify which style in rubocop you want code refactored to, so in those instances this tool could be of use.
- hi-v-rocknroll 2y agoI would suggest invest more time in configuration and developing cops where missing. Almost/all cops can be turned on or off as per the configuration[0], many have several alternative choices, and numerous options. It takes time and diligence to configure it for a particular coding standard, environment, or for personal preferences. You can make it enforce whatever coding style you want, and with a great deal of nuance and to including codemod transformations. This later bit was used extensively for large scale codemods. Furthermore, writing a cop is surprisingly painless. 0: https://docs.rubocop.org/rubocop/configuration.html https://docs.rubocop.org/rubocop/configuration.html
- baweaver 2y agoThe testing utilities are also great. The difficulty, I'd say, is inherit to working with ASTs and simplifying it is hard. They tried with Node Pattern, synvert tried with NQL, and I wanted to try with pattern matching and potentially more in-Ruby approaches. Nothing particularly wrong with any of them, but trying to sort out what's not matching and getting an answer for now "close" a node was is a bit involved. Go far enough down that hole and you hit tree edit distance and Zhang Sha Sha algorithms.
- lloeki 2y ago> you can't specify which style in rubocop you want code refactored to You can, with the per-cop `EnforcedStyle` configuration key. I hate browsing the Rubocop doc so I just put the cop name with that config key set to a bogus value, then Rubocop yells at me about the invalid value and lists the available ones. There can be more than EnforcedStyle, e.g see these for Style/HashSyntax (scroll up for examples), which autocorrect will respect: https://docs.rubocop.org/rubocop/cops_style.html#configurable-attributes-43 https://docs.rubocop.org/rubocop/cops_style.html#configurabl...
- dolni 2y agoWorse than that, Rubocop will complain about things that change the meaning of your code. For example, Rubocop’s default configuration insists on calling “.zero?” over using “== 0”. Not all objects have a “.zero?” method, and even if they did it isn’t guaranteed to be the same as “== 0”.
- arp242 2y agoIt's just a thing someone pushed just yesterday to see if they can try and do better. It's explicitly marked as experimental. They don't need to write any rationale on why they made it, much less a detailed one. Nothing was "deflected"; what an awful choice of language.
- hi-v-rocknroll 2y agoIf it's not fully formed and doesn't offer a specific advantage, then why is it here?
- jemmyw 2y agoBecause someone posted it and others upvoted the post. I know that's stating the obvious but that's the reason and there doesn't need to be any other.
- arp242 2y agoI was unaware that you're only allowed to publish something if it's fully complete, to the satisfaction of randos on hacker news. Are you actively trying to discourage people from posting their projects or is that just an accidental side-effect?
- baweaver 2y agoTo be fair I didn't post it :) Yeah, it's still very very early in the process and I released it as I have a talk at Ruby Kaigi going over some of how this works next Tuesday, so I wanted something out even if it's simple for now.
- lloeki 2y ago> They don't need to write any rationale on why they made it Just next tho the "experimental" moniker, and within an actual section about Rubocop, they in fact did provide a simple rationale anyway. Checks out for me (even if they didn't have to provide any). (emphasis mine) > Why Not RuboCop? > In most cases you likely want to use RuboCop as it has more robust support and testing. This gem is currently more experimental and focused exclusively on refactoring and AST manipulations in a more minimal sense.
- sinkwool 2y agohttps://github.com/rubocop/rubocop/issues/8091#issuecomment-640142501 https://github.com/rubocop/rubocop/issues/8091#issuecomment-... perhaps they are biased against the tool from participating in a campaign to police the name in the past. But also, there's nothing wrong with more tools in this space. This is clearly an experiment, it should be welcomed.
- baweaver 2y agoYou know I'm friends with @bbatsov right? That's reaching pretty far. I've actively funded the maintainers in the past as well, doesn't mean I agree with everything or every name, but I respect their work.