in src/Analyzer.TemplateProcessor/ArmTemplateProcessor.cs [536:563]
internal InsensitiveDictionary<JToken> PopulateParameters(string parameters)
{
// Create the minimum parameters needed
JObject parametersObject = JObject.Parse(parameters);
InsensitiveDictionary<JToken> parametersDictionary = new InsensitiveDictionary<JToken>();
if (parametersObject["parameters"] == null)
{
throw new Exception("Parameters property is not specified in the ARM Template parameters provided. Please ensure ARM Template parameters follows the following JSON schema https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#");
}
foreach (var parameter in parametersObject.InsensitiveToken("parameters").Value<JObject>()?.Properties() ?? Enumerable.Empty<JProperty>())
{
JToken parameterValueAsJToken = parameter.Value.ToObject<JObject>().Property("value")?.Value;
// See if "reference" was specified instead of "value"
bool isReference = false;
if (parameterValueAsJToken == null)
{
parameterValueAsJToken = parameter.Value.ToObject<JObject>().Property("reference")?.Value;
if (parameterValueAsJToken != null) isReference = true;
}
parametersDictionary.Add(parameter.Name, isReference ? $"REF_NOT_AVAIL_{parameter.Name}" : parameterValueAsJToken ?? string.Empty);
}
return parametersDictionary;
}