It turns out that a rule can be valid even if it never reports a violation and thus has no messages. Example: https://github.com/jsx-eslint/eslint-plugin-react/blob/8306a7bc81be567d36c02e21c1d68f44fa3468e3/lib/rules/jsx-uses-vars.js#L54