Github-Aktionen, um Rails-Code für angemessen automatisierte Codeüberprüfungen zu erhalten

Einführung

In GitHub-Aktionen wurden verschiedene Aktionen in Marget Place veröffentlicht. Installieren Sie es einfach und es kann in Ihrem Rails-Projekt verwendet werden. Aber ... wenn Sie es so lassen, wie es ist, werden Sie viele virtuelle Maschinen verwenden, so dass Sie im Handumdrehen Credits in einem privaten Repository verbrauchen ... Also haben wir beschlossen, es für unser Projekt zu machen.

Es wäre schön, wenn ich das gesamte Zielprojekt analysieren und jederzeit sauber halten könnte, aber ich könnte es nicht tun, weil ich es in die Mitte stelle. Daher besteht die Richtlinie darin, zumindest die von jedem ausgegebenen Pull-Anforderungen zu bereinigen.

Der Code, als ich es versuchte, ist hier. https://github.com/ken1flan/test_with_reviewdog

Das Tool, das ich diesmal benutze (Danke!)

Code

Grob gesagt ist das, was Sie tun, so. Das statische Analysetool, das reviewdog intern ausführt, ist in .reviewdog.yml beschrieben.

  1. Installation von Ruby und Node.js erforderlich, um statische Analysetools auszuführen
  2. Installation der für das Projekt erforderlichen Bibliotheken
  3. Installation des Überprüfungshundes
  4. Führen Sie einen Überprüfungshund aus

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}

Ausgabe

Gefällt mir Wird ausgegeben. Was in der Pull-Anfrage enthalten ist, wird zur einfachen Anzeige angezeigt. Da "Gefilterte Ergebnisse" alles enthält, was im Projekt enthalten ist, können Sie auch sehen, wie viele Probleme Sie haben, sodass Sie sich darüber Gedanken machen möchten.

image.png

Wo ich süchtig war

Verwenden Sie für das Ruby-Setup Ruby / Setup-Ruby!

GitHubs action / ruby kann die Patch-Version nicht angeben, und die neueste Version wird mit einer leichten Verzögerung verwendet. Ich denke, dass ich die Ruby-Version in der Gemfile spezifiziere, aber sie ist nicht damit kompatibel, und die Version verschiebt sich oft und die Bundle-Installation schlägt fehl.

Ruby / setup-ruby, das von der Ruby-Community verwaltet wird, kann auch die Patch-Version angeben, daher habe ich mich für diese entschieden.

Es ist mir peinlich, deshalb möchte ich das Problem beheben, bevor ich eine Pull-Anfrage abschicke!

Sie können dies im Voraus überprüfen, indem Sie "reviewdog" auf Ihrem eigenen PC installieren und die folgenden Schritte ausführen.

$ reviewdog --diff='git diff main'

Schließlich

Wenn Sie einen Menschen dazu auffordern, sind Sie und der Prüfer beide glücklich. Fragen Sie am besten eine Maschine. Wenn darauf hingewiesen wird, gibt es zwar viele Fälle, daher ist es hilfreich, einen guten Schreibstil zu erlernen, den ich selbst nicht lernen kann.

Recommended Posts

Github-Aktionen, um Rails-Code für angemessen automatisierte Codeüberprüfungen zu erhalten
Formatierer vor Codeüberprüfung mit GitHub-Aktionen
Code zum Verbinden von Rails 3 mit PostgreSQL 10
Rails-Anfänger haben versucht, mit RSpec zu beginnen
[Rails] So geben Sie Erfolgs- und Fehlermeldungen aus