🍴Dart Analyze and Fix Workflow

Como realizar a criação de um workflow no GithubActions para aplicar correções e verificar código.

Essa etapa é uma repetição praticamente do uso do left hook, que trata localmente essas análises. Mas como segurança e garantia de qualidade, vamos adicionar a action também no repositório, e fazer com que pull requests só sejam aceitas casos essa action passe com sucesso.

A ideia desse workflow é que ele rode sempre que uma Pull Request for aberta nos projetos. Ao rodar, o workflow executa o comando dart fix --apply para aplicar correções no código.

Após essa correção, caso haja alterações, o workflow faz o commit automático das modificações. Em seguida, roda o dart analyze para verificar se o código ainda possui problemas. Caso o analyze encontre erros, o workflow falha. Caso contrário, ele finaliza com sucesso, liberando o merge da Pull Request.

🍴 Dart Analyze and Fix Workflow

Como realizar a criação de um workflow no GitHub Actions para aplicar correções e verificar código.

A ideia desse workflow é que ele rode sempre que uma Pull Request for aberta nos projetos. Ao rodar, o workflow executa o comando dart fix --apply para aplicar correções no código, como por exemplo:

  • Adicionar const onde aplicável

  • Remover imports não utilizados

  • Corrigir práticas recomendadas do uso do Dart, entre outros

Após essa correção, caso haja alterações, o workflow faz o commit automático das modificações. Em seguida, roda o dart analyze para verificar se o código ainda possui problemas. Caso o analyze encontre erros, o workflow falha. Caso contrário, ele finaliza com sucesso, liberando o merge da Pull Request.


📌 Importante Embora o processo automatizado via CI seja útil, uma alternativa recomendada é aplicar as correções localmente antes de abrir a PR. Isso evita commits automáticos no pipeline e dá mais controle ao desenvolvedor. Ferramentas como Lefthook podem ser configuradas para rodar dart fix e dart analyze nos ganchos de pré-commit, garantindo a qualidade do código ainda no ambiente local.


🔧 Como adicionar o workflow no GitHub Actions

Dentro da pasta .github, que fica na raiz do projeto (caso ela não exista, basta criar), é necessário adicionar uma subpasta chamada workflows, e dentro dela, criar o arquivo dart_analyze.yml com o conteúdo abaixo:

name: Dart CI

on: [pull_request]

jobs:
  analyze_and_fix:
    runs-on: ubuntu-latest

    permissions:
      contents: write # To push a branch

    steps:
      # Faz o checkout do código do repositório
      - uses: actions/checkout@v2
        with:
          ref: ${{ github.head_ref }}

      # Configura o SDK Flutter
      - name: Setup Flutter
        uses: subosito/flutter-action@v2
        with:
          flutter-version: "3.10.5" # Especifique a versão do Flutter aqui. Remova essa linha se quiser a versão estável mais recente.

      # Instala as dependências do Flutter
      - name: Install dependencies
        run: flutter pub get

      - name: Build Runner Files Generation
        run: flutter pub run build_runner build --delete-conflicting-outputs

      # Tentativa de correção automática de problemas
      - name: Auto-fix issues
        run: dart fix --apply

      - name: Setup .env
        run: cp .env.example .env.staging && cp .env.example .env.homolog

      # Roda o Dart Analyzer para verificar se ainda existem problemas
      - name: Run Dart Analyzer
        run: dart analyze

      # Faz commit e push das correções, se houver
      - name: Commit fixes
        run: |
          git config --local user.email "action@github.com"
          git config --local user.name "GitHub Action"
          git commit -am "Apply dart fixes" || echo "No changes to commit"
          git push origin ${{ github.head_ref }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Após isso, basta subir essas alterações para seu repositório, que a action vai rodar seu workflow a partir das próximas PR's abertas.

Last updated