In my opinion, the idea of having a separate lint checker for a language is antiquated. If there are problems, they should be diagnosed at compile time or run time. You can add options about warning levels or strictness if there are concerns about which diagnostics are appropriate.
There are two points, that should be solved
a) introduction a dependency to other object in schema - now CREATE FUNCTION is fully independent on others
b) slow start - if we check all paths on start, then start can be slower - and some functions should not work due dependency on temporary tables.
I am thinking about possible marking a function by #option (we have same idea)
some like
#option check_on_first_start
#option check_on_create
#option check_newer
But still I have no idea, how to push check without possible slowdown execution with code duplication