Azure / Azure/template-analyzer

[BUG] Handling of resource group tags

Open
#313 1 comment 0 reactions 0 assignees View on GitHub
🔍 needs-triage bug
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.