Proper method name parsing
Description
Introduces real parsers for method names.
Additions
- @Unmodifiable because that looks cool (and documents that the returned value is unmodifiable)
- An abstract MethodEntityName that's both an EntityName and a MethodName
- Grammars for days parsing the various aspects of the intriguing Java language
- A detector for pythons
- SemVer compatibility logic to find the right pythons
Changes
- Moved method name classes around to have more logical places (right packages and tool-generated names are in the worker module)
- getParameterTypes and getParameterNames in MethodName have default implementations
- Renamed QualifiedName to QualifiedMethodName
- MethodNameTransformer now handles weird nameless entities or entities with incomplete names that do not have a qualified equivalent, in which case the unqualified will be treated as qualified so no information is lost
- Parameter is now final. Do not subclass it, why would you even want to do that
- It's also very pure. Military-grade Parameters bby
- Qualified method names are also qualified method name creators. They create themselves.
- [toString]:BEAUTIFICATION([in][places])
- Analyzers can also request the current job even if they are not job analyzers
- Updated Lizard
- Existing Python-based tools use the globally detected python instance instead of doing odd OS-based guessing
- Proper method name parsing using the new grammars and grammar-based knowledge
- JobRunners know the current job in addition to the current job's ID
Test and Review
To be filled in by the reviewers
-
All of the methods are commented to expectation -
The methods are tested to satisfaction -
There are no unnecessary files present in the MR -
The continuous integration has no problems with the MR -
The MR is filled in as requested (including labels, milestones, and reviewers) -
The documentation is up-to-date -
All nullable parameters are marked as such
Edited by Luc Everse