다음을 통해 공유


Bicep 구성 파일에 Linter 설정 추가

bicepconfig.json 파일에서 Bicep Linter에 대한 유효성 검사 설정을 사용자 지정할 수 있습니다. Linter는 모범 사례를 위해 Bicep 파일을 평가할 때 이러한 설정을 사용합니다.

이 문서에서는 Bicep Linter 작업에 사용할 수 있는 설정에 대해 설명합니다.

Linter 사용자 지정

Linter 설정은 analyzers 요소에서 사용할 수 있습니다. Linter 사용 여부를 설정하고, 규칙별 값을 제공하고, 규칙 수준을 설정할 수 있습니다.

다음 예는 구성에 사용할 수 있는 규칙을 보여 줍니다.

{
  "analyzers": {
    "core": {
      "enabled": true,
      "rules": {
        "adminusername-should-not-be-literal": {
          "level": "warning"
        },
        "artifacts-parameters": {
          "level": "warning"
        },
        "decompiler-cleanup": {
          "level": "warning"
        },
        "explicit-values-for-loc-params": {
          "level": "off"
        },
        "max-asserts": {
          "level": "warning"
        },
        "max-outputs": {
          "level": "warning"
        },
        "max-params": {
          "level": "warning"
        },
        "max-resources": {
          "level": "warning"
        },
        "max-variables": {
          "level": "warning"
        },
        "nested-deployment-template-scoping": {
          "level": "error"
        },
        "no-conflicting-metadata" : {
          "level": "warning"
        },
        "no-deployments-resources" : {
          "level": "warning"
        },
        "no-hardcoded-env-urls": {
          "level": "warning"
        },
        "no-hardcoded-location": {
          "level": "off"
        },
        "no-loc-expr-outside-params": {
          "level": "off"
        },
        "no-unnecessary-dependson": {
          "level": "warning"
        },
        "no-unused-existing-resources": {
          "level": "warning"
        },
        "no-unused-params": {
          "level": "warning"
        },
        "no-unused-vars": {
          "level": "warning"
        },
        "outputs-should-not-contain-secrets": {
          "level": "warning"
        },
        "prefer-interpolation": {
          "level": "warning"
        },
        "prefer-unquoted-property-names": {
          "level": "warning"
        },
        "protect-commandtoexecute-secrets": {
          "level": "warning"
        },
        "secure-parameter-default": {
          "level": "warning"
        },
        "secure-params-in-nested-deploy": {
          "level": "warning"
        },
        "secure-secrets-in-params": {
          "level": "warning"
        },
        "simplify-interpolation": {
          "level": "warning"
        },
        "simplify-json-null": {
          "level": "warning"
        },
        "use-parent-property": {
          "level": "warning"
        },
        "use-recent-api-versions": {
          "level": "warning",
          "maxAllowedAgeInDays": 730
        },
        "use-resource-id-functions": {
          "level": "warning"
        },
        "use-resource-symbol-reference": {
          "level": "warning"
        },
        "use-secure-value-for-secure-inputs": {
          "level": "error"
        },
        "use-stable-resource-identifiers": {
          "level": "warning"
        },
        "use-stable-vm-image": {
          "level": "warning"
        }
      }
    }
  }
}

속성은 다음과 같습니다.

  • enabled: Linter를 사용하도록 설정하려면 true를 지정하고 사용하지 않도록 설정하려면 false를 지정합니다.
  • verbose: Visual Studio Code에서 사용하는 bicepconfig.json 파일을 표시하려면 true를 지정합니다.
  • rules: 규칙별 값을 지정합니다. 각 규칙에는 위반이 발견될 때 Linter가 대응하는 방식을 결정하는 수준이 있습니다.

level에 사용할 수 있는 값은 다음과 같습니다.

level 빌드 시간 동작 편집기 동작
Error 위반은 명령줄 빌드 출력에서 오류로 나타나며 빌드가 실패합니다. 잘못된 코드는 빨간색 물결선으로 밑줄이 그어져 문제 탭에 표시됩니다.
Warning 위반은 명령줄 빌드 출력에서 경고로 표시되지만 빌드 실패를 유발하지는 않습니다. 잘못된 코드는 노란색 물결선으로 밑줄이 그어져 문제 탭에 표시됩니다.
Info 위반은 명령줄 빌드 출력에 나타나지 않습니다. 잘못된 코드는 파란색 물결선으로 밑줄이 그어져 문제 탭에 표시됩니다.
Off 완전히 억제되었습니다. 완전히 억제되었습니다.

환경 URL

하드코딩된 환경 URL에 대한 규칙의 경우 검사할 URL을 사용자 지정할 수 있습니다. 기본적으로 다음 설정이 적용됩니다.

{
  "analyzers": {
    "core": {
      "enabled": true,
      "rules": {
        "no-hardcoded-env-urls": {
          "level": "warning",
          "disallowedhosts": [
            "api.loganalytics.io",
            "api.loganalytics.iov1",
            "asazure.windows.net",
            "azuredatalakeanalytics.net",
            "azuredatalakestore.net",
            "batch.core.windows.net",
            "core.windows.net",
            "database.windows.net",
            "datalake.azure.net",
            "gallery.azure.com",
            "graph.windows.net",
            "login.microsoftonline.com",
            "management.azure.com",
            "management.core.windows.net",
            "region.asazure.windows.net",
            "trafficmanager.net",
            "vault.azure.net"
          ],
          "excludedhosts": [
            "schema.management.azure.com"
          ]
        }
      }
    }
  }
}

다음 단계