--Rspec (Testautomatisierung) --Brakeman (Sicherheitskontrolle) --Rubocop (Ruby-Code-Analyse) --RailsBestPractices (Rails-Code-Analyse)
Ich werde unter der Annahme schreiben, dass Sie bereits installiert haben und bereit sind, Befehle manuell einzugeben. Wenn Sie ein Tool haben, das Sie nicht verwenden, ignorieren Sie die Einstellungen in diesem Teil.
Gemfile
group :development do
gem 'overcommit'
$ bundle install
$ overcommit --install #Konfigurationsdatei generieren
.overcommit.yml
#Deaktivieren Sie unnötige Überprüfungen
CommitMsg:
ALL:
enabled: false
PreCommit:
AuthorEmail:
enabled: false
AuthorName:
enabled: false
BrokenSymlinks:
enabled: false
CaseConflicts:
enabled: false
MergeConflicts:
enabled: false
#Erforderliche Überprüfungseinstellungen
RuboCop:
enabled: true
RailsBestPractices:
enabled: true
PrePush:
Brakeman:
enabled: true
RSpec:
enabled: true
$ overcommit --sign #Reflektieren Sie die Einstellungsänderung
Außerdem wird Standardeinstellungen angewendet, mit Ausnahme der Elemente, die explizit in der Einstellungsdatei festgelegt sind.
Das Folgende ist ein Beispiel für die Operationsprüfmethode.
Rubocop
Betten Sie Time.now
in einen geeigneten Controller ein und bestätigen Sie, dass es nicht festgeschrieben werden kann
RailsBestPractices
Setzen Sie default_scope order (created_at :: desc)
auf ein geeignetes Modell und bestätigen Sie, dass Sie kein Commit durchführen können
Brakeman
Setzen Sie "http_basic_authenticate_with name:" ID ", password:" password "auf den entsprechenden Controller und bestätigen Sie, dass Push nicht möglich ist.
RSpec
Schreiben Sie einen Test, der nicht bestanden wird, und stellen Sie sicher, dass Sie nicht pushen können
Wenn ich RSpec manuell ausführte, bestand es, aber ich konnte die Pre-Push-Prüfung nicht bestehen, und die folgende Meldung wurde angezeigt.
NameError:
uninitialized constant Capybara::DSL
Wenn ich es manuell drücke, führe ich "bin / rspec" aus, aber wenn ich vorab drücke, führe ich "bundle exec rspec" aus, so dass es so aussieht, als ob das Verhalten etwas anders ist. Gelöst durch Hinzufügen des Folgenden zu spec_helper.rb
.
spec/spec_helper.rb
RSpec.configure do |config|
#Die folgenden 3 Zeilen wurden hinzugefügt
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../config/environment', __dir__)
require 'rspec/rails'
Recommended Posts