This sounds like a very nice tool.
Just a word about this particular example:

Collection >> includesAllOf: values
  self
    deprecated: ‘Use #includesAll: instead’
    transformWith: ‘`@rec includesAllOf: `@arg’ ->
                   ‘`@rec includesAll: `@arg’.

  ^ self includesAll: values

Surely this is back to front?  #includesAllOf: reads well and is
compatible with GNU Smalltalk (and classic Squeak), while #includesAll:
doesn't work in most of the Smalltalks I have access to.

My own library has
  {includes,excludes}{All,Any,None,One}Of:
which wouldn't read nearly so well without "Of".

On Wed, 7 Apr 2021 at 00:50, Oleksandr Zaitsev <olk.zayt...@gmail.com>
wrote:

> Hello,
>
> I need your help to recommend some projects that I can use in my study of
> transforming deprecations.
>
> As many of you know, Pharo supports a very powerful concept of
> "transforming" deprecations. You can deprecate a method, providing a
> transformation rule. Then when a client application calls the deprecated
> method, the call-site will be automatically rewritten to use the new API.
> Here is an example of a transforming deprecation:
>
> Collection >> includesAllOf: values
>   self
>     deprecated: ‘Use #includesAll: instead’
>     transformWith: ‘`@rec includesAllOf: `@arg’ ->
>                    ‘`@rec includesAll: `@arg’.
>
>   ^ self includesAll: values
>
>
> You can read more about transforming deprecations in my blog post:
> https://blog.oleks.fr/deprewriter
>
> I am working on a tool that can analyse the commit history of a project
> and recommend deprecations and transformation rules that can be inserted
> before the release. It works like this:
>
> 1. Collect all commits between two releases of a project
> 2. Mine those commits to identify method call replacements (deletions and
> additions) that happen frequently
> 3. Infer the mapping between the methods of the old and new API
> 4. Recommend deprecations and generate transformation rules
>
> I have validated my approach on Pharo, Moose, Pillar, Famix, and DataFrame
> projects.
>
> Now I am looking for other projects that could benefit from recommended
> deprecations and could be used in my study.
>
> *Required:*
> - open source project with accessible commit history (e.g. public git
> repository)
> - written in Pharo (although if you know projects in other languages that
> could be interesting for my study, please let me know about them as well)
>
> *Prefered:*
> - ongoing development
> - multiple releases
> - has users (other projects that depend on it)
>
> If you have some projects in mind, please let me know about them!
>
> And if you are interested in this study and want to learn more, don't
> hesitate to contact me by email.
>
> Oleksandr
>
>
>

Reply via email to