inject-declarations
The inject-declarations
advice merges declarations produced by a code template into the matched node’s compilation unit.
This is often used to introduce new type definitions or declare foreign functions linked via //go:linkname
to avoid creating dependency cycles.
Examples
inject-declarations:
imports:
context: context
ddtrace: gopkg.in/DataDog/dd-trace-go.v1/ddtrace
links:
- gopkg.in/DataDog/dd-trace-go.v1/internal/appsec
- gopkg.in/DataDog/dd-trace-go.v1/internal/appsec/emitter/httpsec
- gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer
template: |
//go:linkname __dd_appsec_RASPEnabled gopkg.in/DataDog/dd-trace-go.v1/internal/appsec.RASPEnabled
func __dd_appsec_RASPEnabled() bool
//go:linkname __dd_httpsec_ProtectRoundTrip gopkg.in/DataDog/dd-trace-go.v1/internal/appsec/emitter/httpsec.ProtectRoundTrip
func __dd_httpsec_ProtectRoundTrip(context.Context, string) error
//go:linkname __dd_tracer_SpanType gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer.SpanType
func __dd_tracer_SpanType(string) ddtrace.StartSpanOption
//go:linkname __dd_tracer_ResourceName gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer.ResourceName
func __dd_tracer_ResourceName(string) ddtrace.StartSpanOption
//go:linkname __dd_tracer_Tag gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer.Tag
func __dd_tracer_Tag(string, any) ddtrace.StartSpanOption
//go:linkname __dd_tracer_StartSpanFromContext gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer.StartSpanFromContext
func __dd_tracer_StartSpanFromContext(context.Context, string, ...ddtrace.StartSpanOption) (ddtrace.Span, context.Context)
//go:linkname __dd_tracer_WithError gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer.WithError
func __dd_tracer_WithError(error) ddtrace.FinishOption
//go:linkname __dd_tracer_Inject gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer.Inject
func __dd_tracer_Inject(ddtrace.SpanContext, any) error
type __dd_tracer_HTTPHeadersCarrier Header
func (c __dd_tracer_HTTPHeadersCarrier) Set(key, val string) {
Header(c).Set(key, val)
}
inject-declarations:
imports:
ddtrace: gopkg.in/DataDog/dd-trace-go.v1/ddtrace
http: net/http
internal: gopkg.in/DataDog/dd-trace-go.v1/internal
telemetry: gopkg.in/DataDog/dd-trace-go.v1/internal/telemetry
tracer: gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer
template: |-
type ddRouterConfig struct {
ignoreRequest func(*http.Request) bool
headerTags *internal.LockMap
resourceNamer func(*Router, *http.Request) string
serviceName string
spanOpts []ddtrace.StartSpanOption
}
func ddDefaultResourceNamer(router *Router, req *http.Request) string {
var (
match RouteMatch
route = "unknown"
)
if router.Match(req, &match) && match.Route != nil {
if r, err := match.Route.GetPathTemplate(); err == nil {
route = r
}
}
return fmt.Sprintf("%s %s", req.Method, route)
}
func init() {
telemetry.LoadIntegration("gorilla/mux")
tracer.MarkIntegrationImported("github.com/gorilla/mux")
}