Actions Github pour des révisions de code raisonnables et automatiques du code Rails

introduction

Actions GitHub a diverses actions publiées dans Marget Place. Installez-le simplement et il est prêt à être utilisé dans votre projet Rails. Mais ... si vous le laissez tel quel, vous utiliserez de nombreuses machines virtuelles, vous consommerez donc des crédits dans un référentiel privé en un clin d'œil ... Nous avons donc décidé de le faire pour notre projet.

Ce serait bien si je pouvais analyser l'ensemble du projet cible et le garder propre à tout moment, mais je ne pouvais pas le faire parce que je l'ai mis au milieu. Par conséquent, il s'agit au moins de nettoyer les demandes d'extraction émises par chacun.

Le code lorsque je l'ai essayé est ici. https://github.com/ken1flan/test_with_reviewdog

L'outil que j'utilise cette fois (merci!)

code

En gros, ce que vous faites est comme ça. L'outil d'analyse statique que reviewdog exécute en interne est décrit dans .reviewdog.yml.

  1. Installation de Ruby et Node.js requise pour exécuter les outils d'analyse statique
  2. Installation des bibliothèques requises pour le projet
  3. Installation du chien d'examen
  4. Exécuter le chien de révision

yml:.github/workflows/code_analysis.yml


name: code_analysis
on: [pull_request]
jobs:
  code_analysis:
    name: runner
    runs-on: ubuntu-latest
    env:
      REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    steps:
      - uses: actions/checkout@v2
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: 2.7.1
      - uses: actions/setup-node@v1
        with:
          node-version: 12.x
      - name: cache vendor/bundle
        uses: actions/cache@v1
        with:
          path: vendor/bundle
          key: bundle-${{ hashFiles('**/Gemfile.lock') }}
      - name: cache node_modules
        uses: actions/cache@v1
        with:
          path: node_modules
          key: yarn-${{ hashFiles('**/yarn.lock') }}
      - name: bundle install
        run: bundle check || bundle install --jobs=4 --retry=3 --path vendor/bundle
      - name: yarn install
        run: yarn install
      - name: install reviewdog
        uses: reviewdog/action-setup@v1
      - name: reviewdog
        run: reviewdog -reporter=github-pr-check

yml:.reviewdog.yml


runner:
  rubocop:
    cmd: bundle exec rubocop
  brakeman:
    cmd: bundle exec brakeman --quiet --format tabs
  reek:
    cmd: bundle exec reek --single-line
  haml-lint:
    cmd: bundle exec haml-lint
  eslint:
    cmd: yarn run eslint app/**/*.js
  stylelint:
    cmd: yarn run stylelint app/**/*.{css,scss}

production

Comme ça Est une sortie. Ce qui se trouve dans la demande d'extraction est affiché pour une visualisation facile. Puisque Filtered Findings contient tout ce qui se trouve dans le projet ... vous pouvez également voir le nombre de problèmes que vous rencontrez, vous voudrez peut-être vous en préoccuper.

image.png

Où j'étais accro

Pour la configuration de Ruby, utilisez ruby / setup-ruby!

[Actions / ruby] de GitHub (https://github.com/actions/setup-ruby) ne peut pas spécifier la version du correctif, et la dernière version est utilisée avec un léger retard. Je pense que je spécifie la version de Ruby dans le Gemfile, mais ce n'est pas compatible avec cela, la version change souvent et l'installation du bundle échoue.

Ruby / setup-ruby maintenu par la communauté Ruby peut également spécifier la version du correctif, j'ai donc décidé de l'utiliser.

Je suis gêné, je veux donc résoudre ce problème avant de soumettre une pull request!

Vous pouvez vérifier à l'avance en installant reviewdog sur votre propre PC et en procédant comme suit.

$ reviewdog --diff='git diff main'

finalement

Si vous demandez à un humain de faire cela, vous et le critique serez tous les deux heureux, il est donc préférable de demander à une machine. Quand on le fait remarquer, c'est vrai qu'il y a de nombreux cas, il est donc utile d'apprendre un bon style d'écriture que je ne peux pas appréhender par moi-même.

Recommended Posts

Actions Github pour des révisions de code raisonnables et automatiques du code Rails
Formatter avant la révision du code avec des actions GitHub
Code utilisé pour connecter Rails 3 à PostgreSQL 10
Les débutants de Rails ont essayé de se lancer avec RSpec
[Rails] Comment émettre des messages de réussite et d'erreur