Below is a description for merging duplicate checks that are in different directories. 

Note: This currently only works with the Python API, so the checks must be merged into a .upy file and not a .upl. You’ll want to place the .upy file into a unique directory. 

The following are changes to the .upy script we need to make before deleting the duplicate scripts: 

1. Instead of defining a single id, you can define multiple with ‘ids’.

# The ID for the check
def ids():
return ('ID_01', 'ID_02', 'ID_03')

2. When defining the name of each check, you must pass the id as a parameter, and define a name based on that id. The example below uses a Python dictionary to imitate a switch-case scenario with ‘id’.
Note: The name of the check (the value of the dictionary) must include the path from the main Codecheck directory as shown below: 

# The short name of the check
def name(id):
return {
'ID_01': 'SciTools\' Recommended Checks/Variables should be commented',
'ID_02': 'All Checks/Language Specific/C and C++/Variables/Variables should be commented',
'ID_03': 'All Checks/Language Specific/Ada/Variables/Variables should be commented',

3. To create a description for each check, the id must also be passed as a parameter into the description() function: 

# The short description of the check
def description(id):
return {
'ID_01': "Description of check 01",
'ID_02': "Description of check 02",
'ID_03': "Description of check 03",

4. As well as the detailed_description and define_options functions: 

# The long description of the check
def detailed_description(id):
return {
'ID_01': """\
detailed description of check 01""",
'ID_02': """\
detailed description of check 02""",
'ID_03': """\
detailed description of check 03""",

5. Lastly, if the checks have different core implementations (in the check() function itself), the ID does not need to be passed as a separate parameter, instead it’s accessible as a method of the check object:

def check(check, file):
if == 'ID_01':
elif == 'ID_02':