You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: ARCHITECTURE.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -44,7 +44,7 @@ main jar (`inst/`, `profiling/`, `appsec/`, `iast/`, `debugger/`, `ci-visibility
44
44
`shared/`, `trace/`, etc.). A dedicated `sharedShadowJar` bundles common transitive dependencies
45
45
(OkHttp, JCTools, LZ4, etc.) to avoid duplication across feature jars. All dependencies are relocated
46
46
under `datadog.` prefixes to prevent classpath conflicts. Class files inside feature jars are renamed
47
-
to `.classdata` to prevent unintended loading. See `docs/how_to_work_with_gradle.md`.
47
+
to `.classdata` to prevent unintended loading. See [`docs/how_to_work_with_gradle.md`](docs/how_to_work_with_gradle.md).
48
48
49
49
-**`src/`** — `AgentBootstrap` and `AgentJar`, the entry point loaded by `-javaagent`.
50
50
Deliberately minimal.
@@ -53,7 +53,7 @@ to `.classdata` to prevent unintended loading. See `docs/how_to_work_with_gradle
53
53
decorator base classes (`HttpServerDecorator`, `DatabaseClientDecorator`, etc.), and bootstrap-safe
54
54
utilities. Visible to all classloaders, so instrumentation advice and helpers can use them directly.
55
55
56
-
See `docs/boostrap_design_guidelines.md`
56
+
See [`docs/bootstrap_design_guidelines.md`](docs/bootstrap_design_guidelines.md)
57
57
58
58
-**`agent-builder/`** — ByteBuddy integration layer. Class transformer pipeline:
59
59
`DDClassFileTransformer` intercepts every class load, `GlobalIgnoresMatcher` applies early
@@ -71,15 +71,15 @@ to `.classdata` to prevent unintended loading. See `docs/how_to_work_with_gradle
71
71
-`muzzle/` — Build-time and runtime safety checks. Verifies that expected types and methods
72
72
exist in the library version at runtime. If not, the instrumentation is silently skipped.
73
73
74
-
See `docs/how_instrumentations_work.md` and `docs/add_new_instrumentation.md`.
74
+
See [`docs/how_instrumentations_work.md`](docs/how_instrumentations_work.md) and [`docs/add_new_instrumentation.md`](docs/add_new_instrumentation.md).
75
75
76
76
-**`instrumentation/`** — All auto-instrumentations, organized as `{framework}/{framework}-{minVersion}/`.
77
77
Nearly 200 framework directories. Each follows the same pattern: an `InstrumenterModule` declares the
78
78
target system and integration name, one or more `Instrumenter` implementations select target types
79
79
via matchers, advice classes inject bytecode via `@Advice.OnMethodEnter`/`@Advice.OnMethodExit`,
80
80
and decorator/helper classes contain the actual product logic. Instrumentations are discovered
81
81
via `@AutoService(InstrumenterModule.class)` (Java SPI) and validated by Muzzle at build time.
82
-
See `docs/how_instrumentations_work.md` and `docs/add_new_instrumentation.md` for details.
82
+
See [`docs/how_instrumentations_work.md`](docs/how_instrumentations_work.md) and [`docs/add_new_instrumentation.md`](docs/add_new_instrumentation.md) for details.
0 commit comments