Azure / Azure/template-analyzer
[BUG] Handling of resource group tags
- Dominant language
- C#
- Stars
- 143
- Forks
- 47
- PR merge metrics
- No merged PRs in 30d
Description
### Describe the bug
When configuring Bicep parameter with a default value of `resourceGroup().tags` an exception is thrown and analysis of the Bicep code stops.
```text
Azure.Deployments.Core.Exceptions.ExpressionException: The language expression property 'tags' doesn't exist, available properties are 'id, name, type, location, properties'.
at Azure.Deployments.Expression.Expressions.FunctionExpression.SelectObjectProperty(JObject root, JToken token, TemplateErrorAdditionalInfo additionalInfo)
at Azure.Deployments.Expression.Expressions.FunctionExpression.SelectProperty(JToken root, JToken property, TemplateErrorAdditionalInfo additionalInfo)
at Azure.Deployments.Expression.Expressions.FunctionExpression.EvaluateExpression(ExpressionEvaluationContext context, TemplateErrorAdditionalInfo additionalInfo)
at Azure.Deployments.Expression.Engines.ExpressionsEngine.EvaluateLanguageExpressionsInternal(JToken root, ExpressionEvaluationContext evaluationContext, Boolean ignoreExceptions, TemplateErrorAdditionalInfo additionalInfo, InsensitiveHashSet skipEvaluationPaths)
at Azure.Deployments.Expression.Engines.ExpressionsEngine.EvaluateLanguageExpressionsRecursive(JToken root, ExpressionEvaluationContext evaluationContext, TemplateErrorAdditionalInfo additionalInfo, InsensitiveHashSet skipEvaluationPaths)
at Microsoft.Azure.Templates.Analyzer.TemplateProcessor.ArmTemplateProcessor.ProcessTemplateResourceLanguageExpressions(TemplateResource templateResource, TemplateExpressionEvaluationHelper evaluationHelper)
```
Full example here: https://github.com/Azure/PSRule.Rules.Azure-quickstart/blob/main/bicep/modules/storage/v1/main.bicep
### Expected behavior
As `resourceGroup().tags` is valid for a parameter default that is accepted for ARM the behaviour should be the same when running CI validation.
### Reproduction Steps
Create a Bicep module with the following parameter:
```bicep
param tags object = resourceGroup().tags
```
### Environment
Running Defender for DevOps with GitHub Action `@preview`.
.NET 6.0.
```yaml
- uses: actions/setup-dotnet@v1
with:
dotnet-version: |
6.0.x
# Run analyzers
- name: Run Microsoft Security DevOps Analysis
uses: microsoft/security-devops-action@preview
id: msdo
# Upload alerts to the Security tab
- name: Upload alerts to Security tab
uses: github/codeql-action/upload-sarif@v1
with:
sarif_file: ${{ steps.msdo.outputs.sarifFile }}
```
Contributor guide
Assessment
This issue has not been assessed yet.