reviewdog / action-tflint

Run tflint with reviewdog on pull requests to enforce best practices

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Action summary missing rule ID for invalid AMI errors in TFLint

nyamada100 opened this issue · comments

Version

  • reviewdog/action-tflint@v1.22.0
  • reviewdog : v0.17.1
  • TFLint version: 0.51.1
  • ruleset.aws: 0.31.0
  • ruleset.terraform: 0.6.0

Config

Action.yml

name: tflint with reviewdog
on:
  push:
    branches: [main]
  pull_request:
    paths:
      - "**.tf"
jobs:
  tflint:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
      pull-requests: write

    steps:
      - uses: actions/checkout@v4
        name: Checkout source code
      - name: configure aws credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
          role-session-name: tflint
          aws-region: ${{ secrets.AWS_REGION }}
      - name: tflint with reviewdog
        id: tflint
        uses: reviewdog/action-tflint@v1.22.0
        with:
          github_token: ${{ secrets.github_token }}
          working_directory: "." # Optional. Change working directory
          reporter: github-pr-review # Optional. Change reporter
          fail_on_error: "true" # Optional. Fail action if errors are found
          filter_mode: "added" # Optional. Check all files, not just the diff
          tflint_version: "latest" # Optional. Custom version, instead of latest
          # tflint_rulesets: "aws terraform" # Optional. Extra official rulesets to install
          tflint_init: "true"
          flags: "--config=.tflint.hcl" # Optional. Add custom tflint flags

.tflint.hcl

config {
}
plugin "aws" {
    enabled = true
    version = "0.31.0"
    deep_check = true
    source  = "github.com/terraform-linters/tflint-ruleset-aws"
}

plugin "terraform" {
    enabled = true
    version = "0.6.0"
    source  = "github.com/terraform-linters/tflint-ruleset-terraform"
    preset = "recommended"
}

Action Result Summary

  • The TFLint action did not include the rule ID in the action summary for invalid AMI ID errors.

Running TFLint with Reviewdog

Print tflint details ...
TFLint version 0.51.1

  • ruleset.terraform (0.6.0)
  • ruleset.aws (0.31.0)
    Running tflint with reviewdog 🐶 ...
    Using default working directory. No need to specify chdir
    instance.tf:78:33: error: "ami-xxxxxxxxxxxxxxxxx" is invalid AMI ID. ()
    instance.tf:146:33: error: "ami-xxxxxxxxxxxxxxxxx" is invalid AMI ID. ()

Terminal Command Output

Error: "ami-xxxxxxxxxxxxxxxxx" is invalid AMI ID. (aws_instance_invalid_ami)

on instance.tf line 78:
78: ami = "ami-xxxxxxxxxxxxxxxxx"

Error: "ami-xxxxxxxxxxxxxxxxx" is invalid AMI ID. (aws_instance_invalid_ami)

on instance.tf line 146:
146: ami = "ami-xxxxxxxxxxxxxxxxx"

Expected Behavior

  • The action summary should include the rule ID (aws_instance_invalid_ami) for each invalid AMI error reported by TFLint. This would provide more clarity and context in the summary output.

tflint checkstyle format

 <?xml version="1.0" encoding="UTF-8"?>
 <checkstyle>
   <file name="instance.tf">
     <error rule="aws_instance_invalid_ami" line="78" column="33" severity="error" message="&#34;ami-xxxxxxxxxxxxxxxxx&#34; is invalid AMI ID." link=""></error>
     <error rule="aws_instance_invalid_ami" line="146" column="33" severity="error" message="&#34;ami-xxxxxxxxxxxxxxxxx&#34; is invalid AMI ID." link=""></error>
   </file>

According to https://github.com/reviewdog/reviewdog/blob/master/parser/checkstyle.go, the "source" attribute is used, but in the output of tflint, the "source" attribute is not used, and the "rule" attribute is present instead.