Currently, we have the ability to detect the use of undefined classes and functions. I think that this is a very powerful tool for the purposes of static analysis.
There are a bunch of similar checks that we could do, but which would introduce additional complexity into the library maps and linter rules. Specifically, I thinj that it is possible (with varying levels of difficulty) to check for the following:
# **Use of undefined class constants:** This would involve adding constant definitions to the `__phutil_library_map__.php` file. The simplest case would be `SomeClass::SOME_CONSTANT` but `self::SOME_CONSTANT` should be possible as well. Late static binding (I.e. `static::SOME_CONSTANT`) is probably not possible. See T9054 for one such example.
# **Use of undefined static methods/properties:** This should be quite similar to the above scenario.
It might be possible to extend this to non-static methods, but only in some specific scenarios. For example:
```lang=php
function some_func(SomeClass $x) {
$x->someMethod();
}
```
```lang=php, counterexample
function some_func($x) {
$x->someMethod();
}
```