Releases: suve/GHActions-FPC
Releases · suve/GHActions-FPC
v0.4.0 - "user-defined" input, node16 running
This release adds the "user-defined" input, allowing users to ignore some user-defined compiler messages. By default, no extra filtering is done and both compiler built-in and user-defined messages are handled the same. In response to GitHub deprecating Node12 for running Actions, this release switches to running on Node16, as recommended. All dependencies have also been upgraded to their latest versions.
v0.3.2 - fold "found declaration" messages
This release improves support for "Wrong number of parameters" errors. These are typically followed by FPC listing all functions/methods with a matching name. Previously, the Action would parse all of those compiler messages separately, resulting in generating error-level annotations attached to each declaration. This release adds some code for folding the list of declarations into the original error, resulting in a more helpful annotation attached to the caller. This release also introduces the 'exclude-path' input, allowing to specify a list of directories and files which should be ignored by the Action. Any compiler messages pertaining to excluded paths will be ignored and no annotations will be generated. This does not affect error-level messages, as those cause compilation to fail.
v0.3.1 - improved fatal error support
This release improves support for Fatal Errors, by having the Action detect when FPC and GitHub disagree about how many lines a file has. This would cause GH to ignore some annotations, dismissing them as occuring past the end of file; they are now registered properly. The logic for finding FPC on MS Windows has also been improved, by making it search all possible locations before choosing the latest version of the compiler, instead of picking from the versions found in the first existing location. Also, the 'fail-on' and 'verbosity' inputs have been made case-insensitive, to match the way FPC treats verbosity options.
v0.3.0 - working sub-directory support
This release makes use of FPC's '-vb' option, which makes the compiler use full file paths when printing diagnostic messages. This allows for proper handling of files located in locations different than the main source file, be it sub-directories or parent directories. Because of the dependency on the '-vb' option, this release introduces a minimum version requirement for FPC - 2.1.2. Said version has been released in March 2007, so while it's doubtful that anyone actually uses older releases, a check has been added to ensure that the version used is compatible with this Action.
v0.2.0 - Initial annotation support
This version adds limited support for annotations. It also introduces the 'fail-on' input, allowing for "treat warnings as errors" behaviour. Known issues that need resolving: - FPC emits some errors, like "unexpected end of file", with a line number of one past end of file. For example, consider the following 4-line program: 1 Program hello_infinite; 2 3 Begin 4 Writeln('Oops, forgot to "End." the program!'); When you try to compile it, you'll get the following error: hello.pas(5) Fatal: Unexpected end of file GitHub ignores any annotations where the specified line number exceeds the number of lines in the file. This could be fixed by adding some extra logic for "column-less" diagnostics, to make sure the line number doesn't go past end of file. - FPC emits diagnostics using only the base name of the file. For example, if you have a directory structure like this: - main.pas - units/my_unit.pas Then a diagnostic for units/my_unit.pas will look like this: my_unit.pas(20,5) Note: Local variable "Counter" not used When the Action emits an annotation for "my_unit.pas", GitHub will notice that the file doestn't exist, and ignore it. This could be fixed by utilizing info output from FPC (i.e. '-vi'): Compiling main.pas Compiling /home/user/test/units/my_unit.pas my_unit.pas(20,5) Note: Local variable "Counter" not used Note how the "Compiling..." line contains the full path for my_unit.pas - by converting it to a path relative to the working directory, we could get the path of the file in the repository. This would require making the parser stateful, so caution is advised during implementation. Extra issues which would be nice to get solved: - FPC emits some messages which are most commonly ignored, e.g.: - Warning: "crtbegin.o" not found, this will probably cause a linking failure - Warning: "crtend.o" not found, this will probably cause a linking failure These are common when building GUI programs. Some people may find them useful, though, so ignoring these should be optional. - FPC emits a Fatal when a file contains errors and end of file is reached: Fatal: There were 5 errors compiling module, stopping We already create annotations for errors, and "5 errors found" is redundant information either way, so this should be ignored.
v0.1.0 - initial public release
Initial public release with limited functionality.