Ambar - C++ Energy Analyzer 🔋⚡
Extensão do VS Code que analisa código C++ em tempo real, avaliando sua eficiência energética.
O analisador identifica padrões de código que podem gerar consumo excessivo de recursos, classifica cada ocorrência por nível de severidade (baixo, médio, alto) e sugere otimizações sustentáveis sem comprometer a funcionalidade.
✨ Funcionalidades
- Detecta uso de ponteiros crus (
new/delete/malloc).
- Avalia aninhamento de loops e sugere otimizações de complexidade.
- Analisa containers da STL (
std::list, std::map, push_back sem reserve).
- Identifica más práticas em operações de string (
+=, parâmetros por valor, compare).
- Destaca problemas diretamente no editor com decorações coloridas.
- Exibe diagnósticos no painel de Problems do VS Code.
- Oferece comandos para análise manual e ativação/desativação da análise em tempo real.
📦 Instalação em ambiente de desenvolvimento
Pré-requisitos
Passos
- Clone o repositório:
git clone https://github.com/Ambar-Project/Ambar-extension.git
- Instale as dependências:
npm install --legacy-peer-deps
- Compile o código TypeScript:
npm run compile
- Abra o projeto no VS Code:
code .
- Pressione
F5 para iniciar uma nova janela do VS Code (Extension Development Host).
Essa janela já carrega a extensão.
▶️ Como usar
Abra um arquivo C++ (.cpp, .cc, .cxx ou .c).
A análise será feita em tempo real (se estiver ativada).
Use a paleta de comandos (Ctrl+Shift+P) para:
- Analisar Consumo Energético → executa análise manual do arquivo aberto.
- Ativar/Desativar Análise em Tempo Real → liga/desliga monitoramento automático.
Verifique os resultados:
- Destaques no editor (vermelho, laranja, amarelo).
- Diagnósticos no painel Problems do VS Code.
🧪 Exemplo de análise
int* p = new int(5); // ⚠ Uso de raw pointer (new)
delete p; // ⚠ Delete manual
std::list<int> lista; // ⚠ std::list pode ser ineficiente
std::map<int,int> mapa; // ⚠ Considere unordered_map
std::string s = "oi";
s += " mundo"; // ⚠ Concatenação com +=
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
for (int k = 0; k < 10; k++) {
// ⚠ Loop altamente aninhado
}
}
}
⚙️ Configurações
No settings.json do VS Code, você pode ajustar:
{
"ambar.enableRealTimeAnalysis": true,
"ambar.highlightSeverity": "medium"
}
ambar.enableRealTimeAnalysis → habilita/desabilita análise em tempo real.
ambar.highlightSeverity → define severidade mínima para destacar (low, medium, high).
📌 Próximos Passos
- Suporte a análise semântica via tree-sitter.
- Mais regras de eficiência energética e otimização.
- Integração com relatórios de sustentabilidade de software.
📄 Licença
Distribuído sob a licença MIT.