prometheus / prometheus/client_java

Code Quality Improvement Plan

Ouverte
#1,882 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Java
Étoiles
2.3k
Forks
833
Merge moyen
2 j 16 h
PR mergées (30 j)
86

Description

This issue tracks code quality improvements for the Prometheus Java Client library. Work through these items incrementally.

Remaining Items

Add SpotBugs (Medium Priority)
  • Add spotbugs-maven-plugin to pom.xml
  • Configure with appropriate rule set
  • Note: Deferred due to Java 25 compatibility issues
Refactor Large Classes (Lower Priority)
  • prometheus-metrics-core/src/main/java/.../Histogram.java (978 lines) - consider extracting native histogram logic
Document Configuration Classes (Lower Priority)
  • PrometheusPropertiesLoader - add JavaDoc
  • ExporterProperties and related classes - add JavaDoc
  • ExporterOpenTelemetryProperties - add JavaDoc (noted in TODO)
Consolidate Servlet Exporter Duplication (Lower Priority)
  • Extract common logic from servlet-jakarta and servlet-javax into exporter-common
Add Mutation Testing (Lower Priority)
  • Add Pitest (pitest-maven) for critical modules
  • Start with prometheus-metrics-core and prometheus-metrics-model

Completed Items

  • Add Missing Test Coverage for Exporter Modules — Added 55 tests across 4 modules: exporter-common (22), servlet-jakarta (14), servlet-javax (14), otel-agent-resources (5).
  • Eliminate Dropwizard Module Duplication — Created AbstractDropwizardExports base class with generics. Reduced both modules by ~30%.
  • Address Technical Debt (TODOs) — Completed all 6 TODO items: JavaDoc for ExporterOpenTelemetryProperties, Histogram reset interval tests, environment variable support in PrometheusPropertiesLoader, OpenTelemetry filter documentation, Summary exemplars documentation, SlidingWindow synchronization documentation.
  • Improve Exception Handling — Replaced broad catch (Exception e) with specific exception types in 6 locations.
  • Add Branch Coverage to JaCoCo — Added BRANCH counter check with 50% minimum threshold.
  • Raise Minimum Coverage Thresholds — Raised 4 modules to consistent 60% line coverage.
  • Narrow Checkstyle Suppressions — Replaced global Javadoc suppression with targeted rules for internal/example/benchmark/test packages.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Il s’agit d’un plan comportant plusieurs éléments, et non d’une tâche unique. Commencez par sélectionner un élément non coché, puis examinez le pom.xml, Histogram.java, les classes de configuration ou les modules de servlet indiqués, et tenez compte de la note de compatibilité de SpotBugs avec Java 25. C’est terminé lorsque l’élément sélectionné de la liste de contrôle est implémenté et que sa portée a été vérifiée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
build-system, tooling
Type d'issue
Refactorisation
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
Calme
Clarté
À clarifier
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.