### SUMMARY

Update validate-modules to report messages using named error codes like `version-added` instead of error numbers like `E305`.

This would match the behavior of other tools we use, such as pylint, which have one named error code per rule. This will also make ignore entries much easier to read.

Doing this before 2.9 is released will avoid potential backwards compatibility issues with ignore entries in collections.

##### ISSUE TYPE

Feature Idea

##### COMPONENT NAME

validate-modules

version_added_raw)
            )
        if not self._is_new_module():
            return
        should_be = '.'.join(ansible_version.split('.')[:2])
        strict_ansible_version = StrictVersion(should_be)
        if (version_added < strict_ansible_version or
                strict_ansible_version < version_added):
            self.reporter.error(
                path=self.object_path,
                code=307,
                msg='version_added should be %r. Currently %r' % (should_be, version_added_raw)
            )
    def _validate_ansible_module_call(self, docs):
        try:
            spec, args, kwargs = get_argument_spec(self.path)
        except AnsibleModuleImportError as e:
            self.reporter.error(
                path=self.object_path,
                code=321,
                msg="Exception attempting to import module for argument_spec introspection, '%s'" % e
            )
            self.reporter.trace(
                path=self.object_path,
                tracebk=traceback.format_exc()
            )
            return
        self._validate_docs_schema(kwargs, ansible_module_kwargs_schema, 'AnsibleModule', 332)
        self._validate_argument_spec(docs, spec, kwargs)
    def _validate_argument_spec(self, docs, spec, kwargs, context=None):