Dela via


Linterregel – vad händer om kortslutning

Den här regeln identifierar när körningsvärden skickas som parametrar till moduler, som i sin tur använder dem för att fastställa resurs-ID:n (till exempel när parametern används för att fastställa namn, subscriptionId, resourceGroup, villkor, omfång eller apiVersion av en eller flera resurser i modulen) och flaggar potentiell what-if-kortslutning.

Kommentar

Den här regeln är inaktiverad som standard och ändrar nivån i bicepconfig.json för att aktivera den.

Linterregelkod

Använd följande värde i Bicep-konfigurationsfilen för att anpassa regelinställningar:

what-if-short-circuiting

Lösning

Den här regeln söker efter körningsvärden som används för att fastställa resurs-ID i moduler. Den varnar dig om din Bicep-kod kan orsaka kortslutning. I exemplet nedan flaggas appServiceOutputs och appServiceTests för "what-if short-circuiting" eftersom de skickar körningsvärden som parametrar till modulen, som använder dem när resursen namnges:

main.bicep

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
  name: 'storageAccountName'
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}

module appServiceModule 'modules/appService.bicep' = {
  name: 'appService2'
  params: {
    appServiceName: 'test'
  }
}

module appServiceOutputs 'modules/appService.bicep' = {
  name: 'appService3'
  params: {
    appServiceName: appServiceModule.outputs.outputName
  }
}

module appServiceTest 'modules/appService.bicep' = {
  name:'test3'
  params: {
    appServiceName: storageAccount.properties.accessTier
  }
}

modules/appService.bicep

param appServiceName string

resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
  name: appServiceName
  location: 'eastus'
  properties: {
    httpsOnly: true
  }
}

output outputName string = 'outputName'

Undvik det här problemet genom att använda tidskonstanter för distribution för värden som används för att fastställa resurs-ID:t.

Nästa steg

Mer information om linter finns i Använda Bicep-linter.