fmidue / haskell-template-task

Other
0 stars 0 forks source link

HLint feedback masking more serious defects #7

Closed jvoigtlaender closed 5 months ago

jvoigtlaender commented 5 months ago

The following two situations are almost indistinguishable to students and tutors:

  1. A task configuration has set - Redundant bracket as an HlintError, the student has submitted a semantically wrong program that also has a pair of brackets too much.
  2. A task configuration has set - Redundant bracket as an HlintSuggestion, the student has submitted a semantically correct program that just happens to have a pair of brackets too much.

In both situations, no information about tests having been performed (or not performed) is displayed. Only the information "That pair of brackets is redundant" is displayed.

That is quite harmful in the first situation. From the feedback it seems that there is only this one small stylistic issue with the program. While in reality the submission is completely wrong (but maybe in a subtle way not immediately discernible). The student, having previously encountered tasks where the redundant bracket warning is just a suggestion, and where no test information being printed means that all testing was successful, might now think that their program is functioning correctly (even though no tests were even run; which the student doesn't know, though). And a tutor looking at the submission will likely also just see that there is this bracket warning, but no other output, so assume that everything else with the progam is okay.

Suggested fix: In https://github.com/fmidue/haskell-template-task/blob/0d393c806d5fa571e640e277a2e8ce62b6dafdd9/src/Haskell/Template/Task.hs#L344-L346 it should somehow be made so that if the getHlintFeedback ... True call actually found and printed some hlint hints (and thus will abort and not even progress to the matchTemplate check), then before aborting there should be a printout along the lines of "Unless you fix the above things, your submission will not be considered further (e.g., no tests being run on it)."