-
Notifications
You must be signed in to change notification settings - Fork 386
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Coverlet.Core as NuGet package. #212
Comments
@ppumkin what about the alternative of just wrapping |
I did try this to use the Coverlet.Console package but I get the error
This is why I downloaded your branch and pushed it into my AzureDevops and built the Coverelt.Core package hosted in my private feed. I just need to do a subset of things you are doing in the Console So in the extension I can just use this
I am not sure what changes you would need to do to "open it up" ? It is fine jsut as it is now, I do not need anything else then to tell it where the dll is and what the coverage it. I will automate the test execution using VS IDE API and then I can use Coverlet to get the Coverage directly from memory. I think that building and publishing I am trying to understand why you would not want to publish the package so the options that I can see now are: (in order of preference)
The only reason I ask for you to consider integrating that into your CI/CD pipeline is to avoid partitioning of your Package. Thanks again. |
Even I feel first class package for Coverlet.Core make a lot of sense and would make our life easier. |
I have been getting requests for the NuGet package and will publish an unofficial one onto NuGet in the coming days to help contributors. As you can see people here are also waiting. If you have any reservations about this please let me know. |
@ppumkin and what about when people have problems with your NuGet package? The whole reason As users start to build tools around your NuGet package, they will begin to expect certain things from the core library that should generally be only available via the wrappers and that's extra support overhead for myself and other core contributors. |
Looking at the flip side it also allows users to create and maintain other cool things using your library. For example, the Extension I built solely exists because of your library and MsBuild and Console just cant be used to leverage this functionality. I had to download the source, make my own package and bundle it privately with the final build. Looking at SOLID principles. Your code should be closed to modification but open to extension. Now the true meaning of that in terms of Design Patterns is different but for content makers it means being able to extend beyond your domain boundry. I completely understand what you are saying about changing things. But if you change the API on the CORE then you have to update the MsBuild and Console the same way everybody else using the Core would have to go and update it. Just building a package to allow access on the public API is no threat on how you decide to make all the magic happen inside it just allows people to consume and build more things from there. That is what I consider open to extension for content makers. If you need to change the public API then you change it. Downstream implementors will either update it or not - You cannot really worry about that. The only thing that comes out of this is more people use your library. -EDIT This package could have an Interface and implement the things needed to work with core. It would enable Dependancy Injection and a minimal, non code, API Package? |
I think @ppumkin is right to publish it for others to use but I think it should be forked from this repo and given a name that indicates it is the forked version that way people who consume it don't get confused. If you, @tonerdo, don't like someone else publishing a forked version of your code, then publish it yourself. If you aren't willing to do that then people like myself will consume and enjoy the forked package. |
@jnovick I don't think I like your tone. This project is open source and anyone is free to fork or publish whatever they want. I was simply stating my concerns on what having a |
@tonerdo And that is why I suggest it be a fork with a different name. I am sorry if my tone comes across as harsh. It is not intended that way. It is intended to be more a matter of fact than any emotional tone. This is one of the many reasons I prefer spoken language over written language. Emotions can't be expressed over writing. So if I offended you, I sincerely apologize. While I appreciate your concerns, I find your project to be too good not to try and help it grow by opening up the core project to public consumption. It is not meant to offend you. My strong feelings on being able to consume it are because of how much I love this project and want to be able to use it in more ways. I do hope you reconsider publishing a package, but if you do not then I will enjoy the version published by someone else. |
@ppumkin @jnovick I'm inclined to put this under more consideration. Re-opening this issue and inviting the thoughts of @MarcoRossignoli @petli as core contributors and @ViktorHofer and @sharwell as users who've had to adapt Coverlet to edge cases. Thoughts? |
I don't see any reason why you couldn't publish the package to NuGet. The API compatibility policy can be as relaxed or strict as you like. |
Before express final thoughts I would like to have the "scenarios" list to understand risk-benefit, for risk I mean slow down the freedom to do whatever we want with internals, Coverlet changes very quickly, we added logging and maybe we will change the way we integrate with test framework(collectors), there are some issue with current "static model"(instrumentation/coverageresult in same process) #364 and so on(signature/behaviour changes). |
@MarcoRossignoli my thoughts exactly. I'm not against opening up the core package, I'm just concerned that it's a bit too early. I've also been thinking of creating a separate I'm happy to put a disclaimer about breaking changes but I'll feel more inclined to keep compat when a package is being consumed publicly. Also, in a situation where the |
OK reading @MarcoRossignoli points it actually makes some sense to why you have not done it yet. OK. In terms of segregation I have been reading the NuGet MS Docs and they suggest to package every useful thing into a separate package. So I get that the Core API is volatile so splitting out all the MsBuild, Console and Core things just creates unnecessary overhead. So .. As for providing a Coverlet.Core package AS IS ... Forked Coverlet.Core go crazy people but be warned things are going to change so please do not come crying back here, go cry in a pillow and then refactor your code. |
Close this issue for the moment to cleanup a bit. |
Of course, coverage is not only useful for testing, it could be used in other areas like fuzzing. So for me, as security auditor, it's required as stand-alone and allow it to configure it for persist the instrumentation. |
Interesting...if possible, can you explain better how you use instrumentation for fuzzing/security audit? |
We are developing a tool for fuzzing .net software using your library. Coverage is very important in modern fuzzers, because you can know if you are hitting most of the parts of the software that you want to "fuzz". Using coverage combined with fuzzing you can be more precise with your inputs, and you can know if you are doing a good job. Also in a future is possible to do a "coverage guided fuzzing" that uses program instrumentation to trace the code coverage reached by each input fed to a fuzz target. Fuzzing engines use this information to make informed decisions about which inputs to mutate to maximize coverage. What we need:
|
wow...very interesting way to use coverlet...what do you think @tonerdo? |
You can see a demo with random entries here https://www.youtube.com/watch?v=EKnMCkSQiGY&feature=youtu.be |
This stuff is amazing dot
Wait for community thoughts and maintainers...if we go on we'll discuss interface/usage on new feature issue. |
I agree it'll be good to have this. (Though you hardly need my vote as a maintainer. I can help keeping an eye on the code and discussing the interfaces, but I'm not involved enough to set the path of the project.) |
thank's for share you thoughts Peter! |
This issue can be closed I think, there is a NuGet package available. |
Hi @mdenhoedt what do you mean? |
I'm working on an interactive mutation testing playground and am also looking to use Coverlet's core to analyze and display coverage (not sure yet if this is possible in my scenario). Due to running in the browser on webassembly it unfortunately can't depend on MSBuild or call it from console, so an official Coverlet.Core package would be ideal. |
Fork it and make your own. That's what I did in the end. |
This issue is stale because it has been open for 90 days with no activity. |
Is it possible to offer Coverlet.Core as a NuGet package please.
This will help in development of other extensions, tools and just general consumption of your amazing tool.
As you know, I would like to include automatic code coverage in my Extension but the only way I could to that is to clone your repo and then build the Core NuGet my self and consume that. This creates a problem that I will be missing out on updates.
Also as discussed in this PR #105 it would be better if this functionality consumed Coverlet.Core -- instead of adding that functionality INTO Coverlet.Core -- It is the same as if I wanted to add VSIX into Coverlet.Core.
Please consider this.
Thanks again! 🥇
The text was updated successfully, but these errors were encountered: