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.