In Psalm, this is psalm-seal-methods/psalm-seal-properties.
In Phan, this is phan-forbid-undeclared-magic-methods/phan-forbid-undeclared-magic-properties.
In the majority of use cases, you'd want a single tag that would apply to any analyzer/IDE that exists.
- x(experimental) is the best prefix I can come up with - Having a hyphen is needed to avoid tools such as doctrine from treating the annotations like
- For a few exceptions (e.g. there's a plugin that's only implemented for one analyzer/IDE that adds the methods), having analyzer-specific tags that other analyzers ignore is still useful.
Something along the lines of @seal-properties/@seal-methods on classes, interfaces, and traits would work for that. (Or @x-seal-properties, but there's probably no reason for a prefix in names that have hyphens already)
- I'd prefer for that to be inheritable, and possibly add
@unseal-properties (name to be determined)
cc @muglug