🍴Dart Analyze and Fix Workflow
Como realizar a criação de um workflow no GithubActions para aplicar correções e verificar código.
🍴 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ávelRemover
imports
não utilizadosCorrigir 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 }}
É importantissimo perceber que, nesse caso aqui, o step Setup .env
é necessário apenas em projetos que utilizam variáveis de ambiente com .env
. Caso não seja o seu caso, você pode remover esse step com segurança.
Na sessão de Setup Flutter, é importante que seja adicionado a versão atual do seu projeto.
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