共用方式為


Linter 規則 - what-if short circuiting

此規則會偵測當運行時間值當做參數傳遞至模組時,接著會使用這些值來判斷資源標識碼(例如,當參數用來判斷模組內一或多個資源的名稱、subscriptionId、resourceGroup、條件、範圍或 apiVersion 時),並標幟潛在的假設不足。

注意

此規則預設為關閉,請變更 bicepconfig.json 中的層級加以啟用。

Linter 規則程式碼

使用 Bicep 設定檔中的下列值來自訂規則設定:

what-if-short-circuiting

解決方案

此規則會檢查用來判斷模組內資源標識碼的運行時間值。 如果您的 Bicep 程式代碼可能導致假設的短缺,它會提醒您。 在下列範例中, appServiceOutputsappServiceTests 會標示為假設的短線路,因為它們會將運行時間值當做參數傳遞至模組,這會在命名資源時使用這些值:

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'

若要避免此問題,請將部署時間常數用於判斷資源標識符的值使用。

下一步

如需 Linter 的詳細資訊,請參閱使用 Bicep Linter