Ícone do site Café Codificado

SLOCCount no WebAssembly

SLOCCount no WebAssembly

SLOCCount no WebAssembly. Este projeto/missão paralela ficou um pouco fora de controle.

Lembrei-me de uma ferramenta antiga chamada SLOCCount, que podia contar linhas de código e produzir uma estimativa de quanto custaria para desenvolvê-las. Achei que seria divertido brincar com isso novamente, especialmente considerando o quão barato é gerar código usando LLMs atualmente.

Aqui está a página inicial do SLOCCount por David A. Wheeler. Data de 2001!

Achei que seria divertido tentar colocá-lo em execução na web. Certamente alguém compilou Perl para WebAssembly…?

WebPerl de Hauke ​​Dämpfling é exatamente isso, mesmo adicionando um belo marcação.

Eu disse ao Claude Code para web no meu iPhone para descobrir e construir algo, dando algumas dicas da minha pesquisa inicial:

Construa sloccount.html - uma interface de usuário compatível com dispositivos móveis para executar a ferramenta Perl sloccount em código colado ou em um repositório GitHub fornecido em um campo de formulário

Ele funciona usando a compilação webperl webassembly do Perl, além de carregar o código Perl deste commit exato deste repositório GitHub https://github.com/licquia/sloccount/tree/7220ff627334a8f646617fe0fa542d401fb5287e - acho que por meio da API do GitHub, talvez usando o https://github.com/licquia/sloccount/archive/7220ff627334a8f646617fe0fa542d401fb5287e.zip URL se funcionar via CORS

Teste-o com o dramaturgo Python - não edite nenhum arquivo além de sloccount.html e um arquivo testes/test_sloccount.py

Como estava trabalhando no meu telefone, não revisei os resultados. Parecia funcionar, então eu o implantei em hospedagem estática... e então, quando fui dar uma olhada adequada, mais tarde descobri que Claude havia desistido, trapaceado e reimplementado em JavaScript!

Então mudei para Claude Code em meu laptop, onde tenho mais controle, e orientei Claude na implementação do projeto de verdade. Isso levou muito mais tempo do que o projeto merecia - provavelmente uma hora inteira do meu tempo ativo, espalhada pela manhã.

Eu compartilhei algumas das transcrições - um, doise três - como sessões de terminal renderizadas em HTML usando minha ferramenta rtf-to-html.

A certa altura, percebi que o projeto SLOCCount original nem era inteiramente Perl como eu havia assumido, mas incluía vários utilitários C! Então pedi a Claude Code que descobrisse como compilá-los no WebAssembly (ele usava Emscripten) e incorporá-los ao projeto (com notas sobre o que fez.)

O resultado final (código fonte aqui) é realmente muito legal. É uma interface da web com três guias – uma para colar código, uma segunda para carregar código de um repositório GitHub e uma terceira que permite abrir um arquivo Zip cheio de código que você deseja analisar. Aqui está uma demonstração animada:

Eu insiro simonw/llm no campo do repositório GitHub. Ele carrega 41 arquivos do GitHub e exibe um relatório mostrando o número de linhas e o custo estimado.

As estimativas de custos que produz têm muito pouco valor. Por padrão, ele usa o método original de 2001. Você também pode mexer nos fatores - aumentar o salário anual esperado do engenheiro de software dos EUA em relação à estimativa de US$ 56.286 de 2000 é um bom começo!

Eu tinha ChatGPT dê um palpite quais deveriam ser esses números hoje e incluí-los na ferramenta, com um muito aviso proeminente para não confiar neles nem um pouco.

Sair da versão mobile