diff options
| author | pants <niklasjo2004@gmail.com> | 2026-09-21 14:16:22 -0700 |
|---|---|---|
| committer | pants <niklasjo2004@gmail.com> | 2026-09-21 14:16:22 -0700 |
| commit | 4a0d047e83141d3ebe48a2bf4ea58e1192a01333 (patch) | |
| tree | 7125d1be1df434ca98a1d08fb4a30ebd28730d19 /linter/Linter.java | |
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; + } +} |
