Code quality improvements

Đang mở
#1,816 0 bình luận 2 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
25/100
Loại issue
Tái cấu trúc
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Đình trệ
Công nghệ
java
Lĩnh vực
build-system, testing, tooling

Hướng nghiên cứu

Hãy xem đây là một kế hoạch theo dõi thay vì một thay đổi đơn lẻ. Trước tiên, hãy chọn một mục chưa được đánh dấu và đọc mục nhập được nêu trong file, pom.xml hoặc checkstyle-suppressions.xml; xác định điều kiện hoàn thành cho mục đó trước khi thực hiện thay đổi. Chạy các bài kiểm thử module hoặc các bước kiểm tra build liên quan và chỉ cập nhật checklist khi công việc đã chọn được xác minh.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Code Quality Improvement Plan

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

High Priority

1. Add Missing Test Coverage for Exporter Modules
  • prometheus-metrics-exporter-common - base module, no tests
  • prometheus-metrics-exporter-servlet-jakarta - no tests
  • prometheus-metrics-exporter-servlet-javax - no tests
  • prometheus-metrics-exporter-opentelemetry-otel-agent-resources - no tests
2. Eliminate Dropwizard Module Duplication
  • Create shared base class or use generics for prometheus-metrics-instrumentation-dropwizard and prometheus-metrics-instrumentation-dropwizard5 (~297 lines each, nearly identical)
3. Address Technical Debt (TODOs)
  • prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java:965 - "reset interval isn't tested yet"
  • prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java:205 - "Exemplars (are hard-coded as empty)"
  • prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SlidingWindow.java:18 - "synchronized implementation, room for optimization"
  • prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java:105 - "Add environment variables like EXEMPLARS_ENABLED"
  • prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/PrometheusMetricProducer.java:44 - "filter configuration for OpenTelemetry exporter"
  • prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterOpenTelemetryProperties.java:7 - "JavaDoc missing"
4. Improve Exception Handling

Replace broad catch (Exception e) with specific exception types:

  • prometheus-metrics-instrumentation-dropwizard5/src/main/java/.../DropwizardExports.java:237
  • prometheus-metrics-instrumentation-caffeine/src/main/java/.../CacheMetricsCollector.java:229
  • prometheus-metrics-exporter-opentelemetry/src/main/java/.../PrometheusInstrumentationScope.java:47
  • prometheus-metrics-exporter-opentelemetry/src/main/java/.../OtelAutoConfig.java:115
  • prometheus-metrics-instrumentation-jvm/src/main/java/.../JvmNativeMemoryMetrics.java:166
  • prometheus-metrics-exporter-httpserver/src/main/java/.../HttpExchangeAdapter.java:115

Medium Priority

5. Add Branch Coverage to JaCoCo
  • Update pom.xml to add branch coverage requirement (~50% minimum)
<limit>
  <counter>BRANCH</counter>
  <value>COVEREDRATIO</value>
  <minimum>0.50</minimum>
</limit>
6. Raise Minimum Coverage Thresholds

Current thresholds to review:

  • prometheus-metrics-exporter-httpserver - 45% (raise to 60%)
  • prometheus-metrics-instrumentation-dropwizard5 - 50% (raise to 60%)
  • prometheus-metrics-exposition-textformats - 50% (raise to 60%)
  • prometheus-metrics-instrumentation-jvm - 55% (raise to 60%)
7. Add SpotBugs
  • Add spotbugs-maven-plugin to pom.xml
  • Configure with appropriate rule set
8. Narrow Checkstyle Suppressions
  • Review checkstyle-suppressions.xml - currently suppresses ALL Javadoc checks globally
  • Narrow to specific packages/classes that need exceptions

Lower Priority

9. Refactor Large Classes
  • prometheus-metrics-core/src/main/java/.../Histogram.java (978 lines) - consider extracting native histogram logic
10. Document Configuration Classes
  • PrometheusPropertiesLoader - add JavaDoc
  • ExporterProperties and related classes - add JavaDoc
  • ExporterOpenTelemetryProperties - add JavaDoc (noted in TODO)
11. Consolidate Servlet Exporter Duplication
  • Extract common logic from servlet-jakarta and servlet-javax into exporter-common
12. Add Mutation Testing
  • Add Pitest (pitest-maven) for critical modules
  • Start with prometheus-metrics-core and prometheus-metrics-model

Progress Notes

Add notes here as items are completed:

Date Item Notes
2026-01-24 Missing Test Coverage for Exporter Modules Added 55 tests across 4 modules: exporter-common (22 tests), servlet-jakarta (14 tests), servlet-javax (14 tests), otel-agent-resources (5 tests). All tests passing.
2026-01-24 Eliminate Dropwizard Module Duplication Created AbstractDropwizardExports base class (267 lines) with generic type parameters. Reduced dropwizard module from 297 to 209 lines (-88 lines, -30%), dropwizard5 module from 297 to 212 lines (-85 lines, -29%). All tests passing (32 tests dropwizard5, 13 tests dropwizard).
Ngôn ngữ chính
Java
Star
2.3k
Fork
833
Merge trung bình
2 ngày 16 giờ
Pull request đã merge (30 ngày)
86

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của prometheus/client_java

Tất cả issue của prometheus/client_java

Issue tương tự

Thêm issue về Java

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.