### 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

path=self.object_path,
                    code=211,
                    msg='Module #Requires should not end in .psm1: "%s"' % module_name
                )
        for req_stmt in re.finditer(csharp_requires, self.text):
            found_requires = True
            
            module_list = [x.strip() for x in req_stmt.group(1).split(',')]
            if len(module_list) > 1:
                self.reporter.error(
                    path=self.object_path,
                    code=210,
                    msg='Ansible C# util requirements do not support multiple utils per statement: "%s"' % req_stmt.group(0)
                )
                continue
            module_name = module_list[0]
            if module_name.lower().endswith('.cs'):
                self.reporter.error(
                    path=self.object_path,
                    code=211,
                    msg='Module #AnsibleRequires -CSharpUtil should not end in .cs: "%s"' % module_name
                )
        
        if not found_requires and REPLACER_WINDOWS not in self.text:
            self.reporter.error(
                path=self.object_path,
                code=207,
                msg='No Ansible.ModuleUtils or C# Ansible util requirements/imports found'
            )
    def _find_ps_docs_py_file(self):