JaCoCo is a production-grade Java code coverage library that instruments JVM bytecode at runtime or offline to collect execution data, then analyzes and reports coverage metrics (lines, branches, instructions, methods, cyclomatic complexity). It is not a standalone application but a multi-module toolset: a Java agent (`jacocoagent.jar`) for on-the-fly instrumentation, a CLI (`jacococli.jar`) for offline operations, a Maven plugin (`jacoco-maven-plugin`) with goals like `prepare-agent`, `report`, `check`, and Ant tasks. The core library (`org.jacoco.core`) handles bytecode manipulation via ASM, probe insertion, and coverage analysis; the report module (`org.jacoco.report`) generates HTML, CSV, XML, and rule-based check outputs. The architecture follows a layered design: instrumentation → runtime data collection → analysis → reporting, with a visitor pattern for report generation and a filter framework to ignore compiler-generated bytecode (e.g., synthetic methods, Kotlin coroutines, try-with-resources). External dependencies include ASM for bytecode engineering, args4j for CLI parsing, and Google Code Prettify for HTML syntax highlighting. The project supports Java versions 5 through 28 (including preview features) and JVM languages like Kotlin, Groovy, and Scala through extensive compiler-specific filters.
hsweb-framework is a modular Java backend development framework, not a single deployable application. It is built as a multi-module Maven monorepo providing reactive-first CRUD scaffolding, RBAC/authorization, an OAuth2 authorization server, dynamic datasource switching, reactive caching, access logging, i18n, dictionary/enum support, and file upload services. The code is dominated by Spring Boot auto-configurations, SPI extension points, and reusable controller/service interfaces that applications consume as dependencies. It supports both WebFlux (R2DBC) and WebMVC (JDBC) stacks, with reactive APIs as the primary design direction. Architecturally, the framework centers on hsweb-core (bean utilities, i18n, exceptions, ID generation), hsweb-commons (generic CRUD services/controllers, query helpers, SQL analysis), hsweb-authorization (authentication model, token management, AOP method authorization, OAuth2 granters/authenticators), hsweb-datasource (dynamic schema/table/datasource switching), hsweb-concurrent-cache (ReactiveCache with Guava/Caffeine/Redis backends), hsweb-logging (AOP access logs), and hsweb-system (default user, permission, dictionary, and file modules). Key entry points are Java annotations such as @Authorize, @Resource, @EnableEasyormRepository, @EnableEntityEvent, and interface contracts like ReactiveServiceCrudController and CrudService, which auto-generate REST endpoints for entities. Primary data flows move from HTTP requests through WebFlux/WebMVC controllers into reactive or synchronous CrudService implementations, then through EasyORM repositories to R2DBC/JDBC databases. Authorization flows are layered: token parsing/generation, AuthenticationManager initialization, AOP authorization definition parsing, data-permission handlers, and OAuth2 grant/redirect handling. Entity lifecycle events, cache invalidation, and query rewriting are cross-cutting mechanisms implemented via Spring application events, Reactor context, and JSqlParser-based SQL analysis. Redis is used for token storage and cache synchronization; Caffeine/Guava support local reactive caches. External dependencies include Spring Boot 3.x, Reactor, R2DBC, JDBC, Redis, JSqlParser, and Javassist. The codebase demonstrates strong engineering in isolated utilities like FastBeanCopier, reactive cache invalidation, streaming JSON response writing, and SQL query analysis. However, it carries notable drift: mixed javax/jakarta annotations, deprecated legacy APIs, a coexistence of servlet and reactive paths, some ignored/incomplete tests, and complex compatibility layers around OAuth2 and cache semantics. Overall it is a mature, actively maintained framework with substantial reusable components, though consumers should expect to navigate Chinese-language comments and some legacy baggage.