diff options
Diffstat (limited to 'linter/Linter.java')
| -rw-r--r-- | linter/Linter.java | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/linter/Linter.java b/linter/Linter.java new file mode 100644 index 0000000..e30a8c3 --- /dev/null +++ b/linter/Linter.java @@ -0,0 +1,39 @@ +// Nik Johnson +// 2-24-2024 +// TA: Andy Ruan + +import java.util.*; +import java.io.*; + +// file-based linting object, linting based on checks defined in a list +public class Linter { + + private List<Check> checks; + + // constructor, takes list of checks to perform + public Linter(List<Check> checks) { + this.checks = checks; + } + + // compile list of errors based on output of check classes + // takes filename to perform checks on + // return list of errors present in that file + public List<Error> lint(String fileName) throws FileNotFoundException { + File toBeChecked = new File(fileName); + Scanner fileScanner = new Scanner(toBeChecked); + List<Error> errors = new ArrayList<>(); + int lineNumber = 1; + while (fileScanner.hasNext()) { + String line = fileScanner.nextLine(); + for (Check check : checks) { + Optional<Error> error = check.lint(line, lineNumber); + if (error.isPresent()) { + errors.add(error.get()); + } + } + lineNumber++; + } + fileScanner.close(); + return errors; + } +} |
