Linter 規則 - what-if short circuiting
此規則會偵測當運行時間值當做參數傳遞至模組時,接著會使用這些值來判斷資源標識碼(例如,當參數用來判斷模組內一或多個資源的名稱、subscriptionId、resourceGroup、條件、範圍或 apiVersion 時),並標幟潛在的假設不足。
注意
此規則預設為關閉,請變更 bicepconfig.json 中的層級加以啟用。
Linter 規則程式碼
使用 Bicep 設定檔中的下列值來自訂規則設定:
what-if-short-circuiting
解決方案
此規則會檢查用來判斷模組內資源標識碼的運行時間值。 如果您的 Bicep 程式代碼可能導致假設的短缺,它會提醒您。 在下列範例中, appServiceOutputs 和 appServiceTests 會標示為假設的短線路,因為它們會將運行時間值當做參數傳遞至模組,這會在命名資源時使用這些值:
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。