AI-generated audit finding — this issue was opened from an automated security/correctness audit. It has not been triaged by a human yet; verify the reasoning, reproducibility, and severity before acting on it.
Medium: build telemetry is sent once per ProtoFile, not once per logical compilation — CONFIRMED
Affected code:
Verification:
Confirmed. Because ProtoCompile fans out to one protoc call per .proto file and the telemetry plug-in runs inside each protoc invocation, a single logical build that compiles N .proto files produces N telemetry uploads, each reporting FileCount = 1 and a per-file compilation hash. The documentation and ProtobufTelemetryData shape imply whole-build telemetry, which this structure cannot produce.
Impact:
- Server-side telemetry overcounts usage and understates per-build compilation size.
- The 3-second network timeout is paid once per
.proto file when the server is slow/unreachable — a 20-file project can spend a minute in telemetry when offline.
Recommendation:
- Move telemetry out of the per-file
protoc invocation and emit one report from a dedicated MSBuild task after all ProtocTask invocations complete.
- If per-file
protoc must remain, disable telemetry there and run a single BuildTelemetryTask (the task is already declared at IceRpc.Protobuf.Tools.targets:30).
Status: Valid, Medium severity.
Source report: src-IceRpc.Protobuf.BuildTelemetry-audit-2026-04-14.md (finding build telemetry is sent once per ProtoFile, not once per logical compilation — **CONFIRMED**)
Severity (auditor-assigned): Medium
Medium: build telemetry is sent once per
ProtoFile, not once per logical compilation — CONFIRMEDAffected code:
ProtocTaskis invoked per_ProtoFileitem withSources="%(_ProtoFile.Identity)"--icerpc-build-telemetry_outswitch is appended on every invocation whenRunBuildTelemetryis truefileCountandhashBytesare computed from the currentCodeGeneratorRequest.FileToGeneratefileCount > 0, i.e. once per invocationVerification:
Confirmed. Because
ProtoCompilefans out to oneprotoccall per.protofile and the telemetry plug-in runs inside eachprotocinvocation, a single logical build that compiles N.protofiles produces N telemetry uploads, each reportingFileCount = 1and a per-file compilation hash. The documentation andProtobufTelemetryDatashape imply whole-build telemetry, which this structure cannot produce.Impact:
.protofile when the server is slow/unreachable — a 20-file project can spend a minute in telemetry when offline.Recommendation:
protocinvocation and emit one report from a dedicated MSBuild task after allProtocTaskinvocations complete.protocmust remain, disable telemetry there and run a singleBuildTelemetryTask(the task is already declared at IceRpc.Protobuf.Tools.targets:30).Status: Valid, Medium severity.
Source report: src-IceRpc.Protobuf.BuildTelemetry-audit-2026-04-14.md (finding
build telemetry is sent once perProtoFile, not once per logical compilation — **CONFIRMED**)Severity (auditor-assigned): Medium