Source tools stop at source.
Compilers, optimizers, and linkers transform code in ways no source-level linter can see. Inlining, dead-code elimination, name stripping, and cross-module merging all happen below the source layer. By the time your artifact ships, the source view and the binary view disagree.

