Skip to content
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

PublicAPIAnalyzer files should capture more information #3047

Open
drewnoakes opened this issue Nov 16, 2019 · 3 comments
Open

PublicAPIAnalyzer files should capture more information #3047

drewnoakes opened this issue Nov 16, 2019 · 3 comments

Comments

@drewnoakes
Copy link
Member

drewnoakes commented Nov 16, 2019

There are quite a few additional things we could capture in the files used by the public API analyzer. For example, changing any of these would be an API "break" that the analyzer currently doesn't capture:

@drewnoakes
Copy link
Member Author

Repos that give IVT access to their internal members should probably capture internal members in their API descriptions too.

@dougbu
Copy link
Member

dougbu commented Feb 11, 2021

Changing a base type or removing an inherited interface (without changing members)

Had an offline conversation w/ @halter73 about this bullet. Unfortunately, the current generated files do not mention explicitly-implemented members of an interface at all. Tracking the implemented interfaces would avoid that problem.

Somewhat separately, removing an implicitly-implemented member and making it explicit or visa versa is a change (which is breaking only in the implicit to explicit direction) rather than a removal but, right now, it shows up as a complete removal.


Repos that give IVT access to their internal members should probably capture internal members in their API descriptions too.

If this were implemented, I'd appreciate a way to turn it off completely. IVT is often used in a very narrow / localized fashion e.g. just with DynamicProxyGenAssembly2 (for Moq) and associated test assemblies.

@Youssef1313
Copy link
Member

Youssef1313 commented Apr 2, 2021

Missing class modifiers looks like a roslyn issue. The analyzer uses SymbolDisplayMemberOptions.IncludeModifiers, but roslyn doesn't handle it for INamedType.

https://github.com/dotnet/roslyn/blob/f23a18008b23d30ba7ce753ff9f562dc9b4785eb/src/Compilers/CSharp/Portable/SymbolDisplay/SymbolDisplayVisitor.Types.cs#L185

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants