exa_observability 1.0.0 exa_observability: ^1.0.0 copied to clipboard
Project of observability
Exa Observability #
A observabilidade é uma prática importante no desenvolvimento de software que envolve a capacidade de entender e monitorar o comportamento de um sistema em tempo real. Ela permite que os desenvolvedores e operadores tenham uma visão clara do que está acontecendo dentro do sistema, identifiquem problemas e tomem medidas corretivas de forma eficiente.
No contexto desse pacote, utilizamos o sentry para criar uma abstração que permite monitorar os erros e logs de aplicações.
Você pode encontrar um exemplo de como configurar e usar o pacote na pasta example
.
void main() async {
/// Inicializa o app dentro de um zone para capturar exceções
await runZonedGuarded(() async {
WidgetsFlutterBinding.ensureInitialized();
/// Inicializa o ExaObservability, trocar o runApp por ExaObservabilityRunApp
exaObservabilityRunApp(
/// Ambiente da aplicação, usar flavor ou variável de ambiente
environment: 'dev',
/// Configuração do Sentry, usar configuração do Sentry relacionado ao projeto que voce deseja enviar as exceções
/// É possivel passar um bool para escolher entre o DSN de produção ou de desenvolvimento
/// False para DSN de desenvolvimento e True para DSN de produção
dsn: ExaSegurancaObservabilityEnv.dsn(false),
/// Aqui segue o app principal normalmente
child: const MyApp(),
);
}, (
dynamic exception,
StackTrace? stack, {
dynamic reason,
Iterable<DiagnosticsNode> information = const [],
bool? printDetails,
bool fatal = false,
}) async {
/// Envia a exceção para o Sentry
ExaObservability.i.captureException(exception: exception, stack: stack);
/// Tambem é possivel ter metricas e atualizações de cada tela, para isso é necessário usar o guard feito para o Modular
/// Exemplo de uso do guard
/// Modular.to.navigate('/home', guard: [ExaGuardObservability()]);
});
}
Coverage #
Refere-se à medida de quão bem o código fonte de um programa é testado por um conjunto de testes automatizados. O coverage é geralmente expresso como uma porcentagem que representa a quantidade de código que foi executado durante a execução dos testes.
Quanto maior a cobertura de um código, maior a confiança de que os testes estão exercitando adequadamente todas as partes do programa. Uma alta cobertura de código é desejável, pois indica que a maioria das linhas de código foi testada e, portanto, há uma maior probabilidade de que erros e falhas sejam identificados.
O criterio de escrita dos testes é baseado no AAA (Arrange, Act, Assert), que é uma estrutura para escrever testes unitários. Ele divide o teste em três partes: a configuração do teste, a execução do teste e a verificação do resultado.
Setup #
- Instalar o pacote lcov no ubuntu
sudo apt-get install make make install-lcov-ubuntu
- Instalar o pacote lcov no mac
make install-lcov-mac
- Instalar o pacote lcov no windows
choco install lcov
- Para rodar o coverage, execute o comando abaixo:
make test-coverage
-
Sera gerado um relatorio de coverage na pasta coverage, caso não abra o navegador automaticamente, abra o arquivo index.html para visualizar o relatorio. #