All 3. CI is configured to fail if clippy is not happy, rust-analyzer is configured to use clippy to make suggestions and on bigger changes (or when I update rust version) I run it locally - just to get the results faster.
Unregularly, whenever I finish a task (new feature, or fixing a bug), mostly before I cut a new release. Sometimes when I find the time, I run clippy with all lints, disabling the ones I don't want to see at all one after another on the commandline, and looking through the others to see if they contain something useful.