Ontem, dia 3 de Abril, publicamos a versão 1.0 do CodeCracker. Após 6 Release Candidates, onde somente corrigimos bugs – um processo que durou 9 meses – e 14 releases no total, finalmente conseguimos zerar todos os bugs e liberar uma versão estável.

Levamos cerca de 8 meses pra escrever quase cem analisadores de código, e praticamente o mesmo tempo corrigindo bugs. Isso só aponta pra alta complexidade que uma linguagem como o C# traz no seu compilador. Versátil e poderosa, o compilador é obrigado a saber lidar com tantas sintaxes diferentes, e muitas vezes ficamos sobrecarregados com tantas possibilidades para expressar o código.

Por exemplo, quem diria que uma sintaxe simples, como essa, que produz um MemberAccessExpressionSyntax…

animal.Comer();

É absolutamente diferente dessa, que produz um MemberBindingExpressionSyntax:

animal?.Comer();

Um detalhe como esse consegue quebrar um analisador de código. E de fato quebrou, basta ver esse o pull request 763 que subi recentemente.

O projeto é liberado em sua versão 1.0 sendo totalmente open source, com licença Apache 2, e seguirá assim, conforme o prometido lá no seu começo. Esse é um projeto livre, da comunidade, para a comunidade.

E por falar em comunidade, sua contribuição foi excelente em todos os sentidos. Muita gente contribuiu bugs, pull requests, documentação, e apoio. É um processo tão intenso que dois contribuidores do CodeCracker, o Juliano Sales e o Mahmoud Ali vieram trabalhar comigo na Lambda3. É mais uma evidência de que o open source vem pra agregar.

Alguns números

Foram 175 bugs corrigidos até chegarmos na versão 1.0, com mais de 300 pull requests e mais de 1200 commits. O projeto hoje acumula 34 contribuidores, e conta com 528 stars no Github, sendo o projeto de C# mais admirado no Github brasileiro, e 80º no mundo (fonte)!

Acumulamos mais dez mil downloads via Nuget, e a versão de C# é 4x mais utilizada que a de VB, e tem 3x mais analisadores e fixes. Já na extension gallery temos 17 mil downloads, mas a versão de C# é 8x mais utilizada que a de VB, que tem menos de 2 mil downloads.

A cobertura de código do projeto se mantém altíssima, variando entre 91% e 92%.

O projeto tem uma estrutura super interessante de ALM, com um board pra verificar o backlog, um processo de integração contínua e build super bem amarrado, e que já libera nugets automaticamente no Myget, e uma validação de cobertura de código constante.

Roadmap

A versão 1.0.0 vai seguir recebendo correções de bugs, sendo que agora vamos nos ater ao semver, sendo a próxima release nesse branch a 1.0.1, a seguinte 1.0.2, e por aí vai. Sempre que um bug for corrigido vamos liberar uma versão nova no Nuget.

Já estamos trabalhando na versão 1.1, que será estabilizada em processo semelhante ao da 1.0. Ela provavelmente vai trabalhar com a API 1.1 do Roslyn e exigir o Update 1 do Visual Studio 2015, que é a primeira versão do VS que oferece essa API.

Contamos com dezenas de novos analisadores no backlog, e vamos focar nos novos. Tem uma opinião? Deixe seu +1 nos issues novos lá no Github.

E se você ainda não usa o projeto, fica o convite. Garanto que vai gostar muito, até porque o foco em analisadores na plataforma de linguagens da Microsoft é gigantesco, e vale a pena conferir os avanços que estão acontecendo nessa frente, independentemente do CodeCracker.

A todos que já estão usando e nos apoiando, fica o nosso OBRIGADO!

E aos meus 2 amigos que junto comigo mantém o projeto, o Elemar Jr, e o Carlos dos Santos, MUITO OBRIGADO pela parceria. E bora comemorar que ainda temos muito software pra entregar!

Giovanni Bassi

Arquiteto e desenvolvedor, agilista, escalador, provocador. É fundador e CSA da Lambda3. Programa porque gosta. Acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é mais eficiente que hierarquia. Foi reconhecido Microsoft MVP há mais de dez anos, dos mais de vinte que atua no mercado. Já palestrou sobre .NET, Rust, microsserviços, JavaScript, TypeScript, Ruby, Node.js, Frontend e Backend, Agile, etc, no Brasil, e no exterior. Liderou grupos de usuários em assuntos como arquitetura de software, Docker, e .NET.