The idea is the following. The state of your local development environment and the state of the server are independent, disconnected. You may update the status of issues on the server, and the local environment will not know about that. To give a chance for the local environment to learn about changes on the server, we need to define some trigger events. Not so often to slow down the IDE, and not so rarely to be useless. What we commonly do in all flavors of SonarLint (Eclipse, IntelliJ, etc) is to re-download issues from the server on file open. Sure, if you have just updated the bindings and therefore fetched all issues, then it’s a bit of a waste. We don’t have sophisticated logic to be smarter there.
So then what’s the point of fetching all the issues at all, you might ask. It’s a fail-safe, in case you may have connectivity issues with the server. Then the previously downloaded issues will be useful.