Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This ended up being a large refactor, to hopefully make the code base a little easier to understand. Here's a small overview of the largest changes.
Remove input/output handling in exercise analyzers
Previously the
Exercise
base class was in charge of parsing the input file and writing the JSON output. This has been broken up into several classes to make individual analyzers more easily testable. It also allows a design where multiple analyzers can be 'stacked'.Add support for comment types
The interface documentation describes an optional
type
property for comments that was previously not supported. This can now be set using theCommentType
enum.Add support for collecting tags
Although the
tags.json
file was being written by the analyzer, it was always empty because the mechanism to add tags was not yet implemented.Use the OO pattern for comments
Previously the analyzer comments were modeled using enums and constants. This makes it hard to keep track of which comments require parameters, and map them to the new
CommentType
. So instead, each comment is now modeled in a separate class. This class combines the comment key and type into one, and automatically bakes in the parameters.Remove JSON from unit tests
The exercise analyzer unit tests now only have to check for the presence of the expected comment(s) instead of having to match the JSON output.