in azdev/operations/linter/rules/parameter_rules.py [0:0]
def id_params_only_for_guid(linter, command_name, parameter_name):
# Check if the parameter is an id param, except for '--ids'. If so, attempt to figure out if
# it is a resource id parametere. This check can lead to false positives, which is why it is a low severity check.
# Its aim is to guide reviewers and developers.
def _help_contains_queries(help_str, queries):
a_query_is_in_a_str = next((True for query in queries if query.lower() in help_str.lower()), False)
return a_query_is_in_a_str
options_list = linter.get_parameter_options(command_name, parameter_name) or []
queries = ["resource id", "arm id"]
is_id_param = False
# first find out if an option ends with id.
for opt in options_list:
if isinstance(opt, Deprecated):
return
id_opts = [opt.endswith('-id'), opt.endswith('-ids')]
if any(id_opts) and opt != "--ids":
is_id_param = True
# if an option is an id param, check if the help text makes reference to 'resource id' etc. This could lead to fa
if is_id_param:
param_help = linter.get_parameter_help(command_name, parameter_name)
if param_help and _help_contains_queries(param_help, queries):
raise RuleError("An option {} ends with '-id'. Arguments ending with '-id' "
"must be guids/uuids and not resource ids.".format(options_list))