Closed xd009642 closed 3 years ago
Not sure if this one can help, I have a small library which:
Links:
Of note, it has false positives for lines defining type alias within functions, which I don't see listed as a known issue in #351.
Yeah that's good, small makes it easier for me to look at all the source :+1:
I'd be happy to help get Veloren in on this :smile:
Oh veloren should be good for gauging performance change between the two, cloned and in the testing folder :heart:
I came across this because of #517. (which can be closed I think, and I don't think is really related to this issue) The code base I'm working on could also be used for testing.
Code is opensource and on GitLab: https://gitlab.com/df_storyteller/df-storyteller Rocket might also be a good candidate.
This has been stalled slightly. I implemented my approach and found that without replicating the partial evaluation steps in the compiler I couldn't reliably mark lines that "are able to be hit". But removing -C link-dead-code did fix linker issues on a variety of projects.
My next step was to try and get it working with cargo rustc
as that lets me apply linker flags to just the crate being compiled. But it only works on the package level not the workspace level (there's an issue for that now https://github.com/rust-lang/cargo/issues/8651). I tried some other stuff anyone interested can see in the issue but to no avail.
Now I was ultimately hoping this could work alongside my ptrace based coverage or https://github.com/xd009642/tarpaulin/issues/549 and be part of the gradual mitigation as until llvm coverage is stable. But it might just be a case of waiting for a bit and being patient
The time crate (time-rs/time) has decent coverage (~95% on the main crate), and is roughly 5k lines of source code. Its dependencies are minimal ("standard" proc macro dependencies, a couple of macros for progressive enhancement, and system APIs). It definitely works on x86!
From manually looking at the coverage, it looks like there's a fair number of false negatives.
Another project you could use is wasm-lsp/wasm-language-server.
The code base isn't too large yet but the project is fairly complex and coverage is high (~99.5%). There were several false negatives earlier having to do with multi-line method chaining but I just reformatted the code to resolve those.
In order to check coverage you would want to invoke:
cargo xtask tarpaulin --rest='--features wasm-language-server/corpus --features wasm-language-server-parsers/corpus'
@xd009642 I can submit a recent crate of mine for testing:
rubik/lobster - v0.2.0 on crates.io
Let me know if there's more I can do to help, Tarpaulin is a great and very useful project. Thanks for your time.
So I'm just going to close this for now, to aid with testing I've created tater and added most of the repos here into the repo list as well as some other projects I got via some list of important rust projects and other users.
I'll be aiming to use this to spot out regressions and changes in coverage behaviour. Although the laptop I've been using it with can't quite handle it so will have to wait till I have access to my desktop again or consider some cloud compute instances :sweat_smile:
I'm going to be working on some substantial changes to tarpaulin (described here: https://github.com/xd009642/tarpaulin/issues/516#issuecomment-665938418) which should:
So all in all this should impact the following issues:
126 #340 #351 #496 #516 #517
But because of this big change I'm also looking for a variety of projects which:
I'll be using these to work out differences in performance and accuracy and preventing any regressions as the search space of potential issues is fairly large. If people could suggest projects that would be a great help.
So far I'll be using: