Prevent dead-code-elimination before coverage #5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
By default, there's a dead-code elimination optimization made on rust binary during build process, even for a non --release build.
This dead-code elimination may lead to inaccurate code coverage reports. For example, a function which is not called at all during tests, will be removed from binary, and won't be reported as uncovered. See my example in which I added a untested function, which is not reported as uncovered.
As per rust-lang/rust#31368, passing
-C link-dead-code
torustc
compiler deactivate dead-code-elimination, improving code coverage accuracy.When building with
cargo
, this flag is passed through the environment variableRUSTFLAGS
.Thus, I added
RUSTFLAGS="-C link-dead-code"
to travis build environment variable and updated README with a note about it.Now the function is reported as uncovered (see example where the untested function is now reported as uncovered)