MagicNumberCodeFix 3.0.11

dotnet add package MagicNumberCodeFix --version 3.0.11
                    
NuGet\Install-Package MagicNumberCodeFix -Version 3.0.11
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MagicNumberCodeFix" Version="3.0.11">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MagicNumberCodeFix" Version="3.0.11" />
                    
Directory.Packages.props
<PackageReference Include="MagicNumberCodeFix">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MagicNumberCodeFix --version 3.0.11
                    
#r "nuget: MagicNumberCodeFix, 3.0.11"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package MagicNumberCodeFix@3.0.11
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MagicNumberCodeFix&version=3.0.11
                    
Install as a Cake Addin
#tool nuget:?package=MagicNumberCodeFix&version=3.0.11
                    
Install as a Cake Tool

MagicNumberCodeFix

Code fix Roslyn que extrai magic numbers para constantes nomeadas, utilizando um modelo de IA local para sugerir nomes significativos com base no contexto do código.

Diagnósticos suportados

Funcionalidades

  • Extrai literais numéricos para declarações const com nomes em PascalCase sugeridos por IA
  • Funciona com a lâmpada do Visual Studio (fix individual) e dotnet format (fix em lote via FixAll)
  • Suporta todas as localizações de código: corpo de método/construtor, expression-bodied members, top-level statements
  • Deduplica constantes dentro do mesmo escopo — reutiliza const existente com o mesmo valor
  • Cache em arquivo garante nomes consistentes em builds com múltiplos target frameworks
  • Adiciona comentário // TODO: Rename quando a IA não está disponível (modo fallback)

Requisitos

Um servidor LLM local compatível com a API do Ollama rodando em http://localhost:11434.

# Instalar Ollama — https://ollama.ai
ollama pull llama3.1:8b

O code fix funciona sem o Ollama rodando, mas usa nomes genéricos (ex: NomeClasse + NomeMetodo + número da linha) com um comentário // TODO: Rename.

Configuração

O code fix lê configurações de %LOCALAPPDATA%\MagicNumberCodeFix\config.json. Se o arquivo não existir, é criado automaticamente com valores padrão na primeira execução.

{
  "model": "llama3.1:8b",
  "namingStyle": "PascalCase"
}

model

Modelo do Ollama utilizado para sugerir nomes de constantes. Pode ser alterado para qualquer modelo disponível no Ollama (ex: codellama:7b, mistral:7b, qwen2.5:7b).

namingStyle

Estilo de nomenclatura das constantes geradas. Valores possíveis:

  • PascalCase (padrão) — ex: TaxRate, MaxRetryAttempts, FreeShippingThreshold
  • ScreamingSnakeCase — ex: TAX_RATE, MAX_RETRY_ATTEMPTS, FREE_SHIPPING_THRESHOLD

O estilo é aplicado tanto nos nomes sugeridos pela IA quanto nos nomes de fallback (quando a IA não está disponível).

Instalação

dotnet add package MagicNumberCodeFix

Uso

Visual Studio

Magic numbers sinalizados por MAGIC_NUMBER_ISSUE ou S109 exibem uma lâmpada com a opção "Extract magic number to constant". A IA analisa o nome da classe, nome do método e código ao redor para sugerir um nome significativo para a constante.

CLI (fix em lote)

dotnet format analyzers .\MeuProjeto.csproj --diagnostics MAGIC_NUMBER_ISSUE

Também funciona com .sln para processar toda a solução:

dotnet format analyzers .\MinhaSolution.sln --diagnostics MAGIC_NUMBER_ISSUE

Para corrigir diagnósticos do SonarAnalyzer:

dotnet format analyzers .\MeuProjeto.csproj --diagnostics S109

Utiliza o FixAll provider para processar todos os magic numbers de uma vez, com deduplicação por escopo.

Exemplo

Antes:

public double CalculateTotal(double subtotal)
{
    var tax = subtotal * 0.21;
    if (subtotal >= 150)
        return subtotal + tax;
    return subtotal + tax + 9.99;
}

Depois:

public double CalculateTotal(double subtotal)
{
    const double TaxRate = 0.21;
    const double FreeShippingThreshold = 150;
    const double ShippingFee = 9.99;
    var tax = subtotal * TaxRate;
    if (subtotal >= FreeShippingThreshold)
        return subtotal + tax;
    return subtotal + tax + ShippingFee;
}

Cache

As respostas da IA são armazenadas em %LOCALAPPDATA%\MagicNumberCodeFix\name_cache.txt para garantir nomes determinísticos entre builds e target frameworks. Delete este arquivo para resetar o cache.

Logs

Logs de debug são escritos em %LOCALAPPDATA%\MagicNumberCodeFix\:

  • codefix.log — operações de fix individual (lâmpada)
  • fixall.log — operações de fix em lote (dotnet format)
  • ollama.log — requisições e respostas da IA

Licença

MIT

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.0.11 129 5/18/2026