Syntax linting displays syntax errors in your code and semantic linting displays other detected problems, such as mismatching docblock and parameter types, missing documentation for methods and missing
For quite some time, Serenata has provided both. However, as of Serenata 4.3.0, all semantic linters have been deprecated. Syntax linting will remain intact for the time being.
Writing linters and extensive code checks is a whole project on its own. It requires advanced semantic analysis - which is something we also need for other operations, such as autocompletion, so not a reason on its own - and there is a lot of ground to cover to implement this properly and fully.
At the same time, there are several separate existing tools that do most of what we do, much more and will likely evolve further in the future. For some examples, see this list.
Some of these examples, such as PHPStan, are also open and making great strides and receiving a lot of community attention, so we feel that our time is better spent focusing on areas that aren't already (adequately) covered by other tools, such as the remainder of language server operations, and especially support for refactoring operations (for your code, not refactoring of the Serenata codebase