1
mirror of https://github.com/rapid7/metasploit-framework synced 2024-10-29 18:07:27 +01:00

Land #3528, add Rubocop from @jhart-r7

This adds the gem to the :development group in the Gemfile, as well as
wires up msftidy to use it.
This commit is contained in:
Tod Beardsley 2014-07-16 13:45:44 -05:00
commit 5fa639c640
No known key found for this signature in database
GPG Key ID: 1EFFB682ADB9F193
5 changed files with 47 additions and 0 deletions

19
.rubocop.yml Normal file
View File

@ -0,0 +1,19 @@
LineLength:
Enabled: true
Max: 180
MethodLength:
Enabled: true
Max: 100
Style/ClassLength:
Exclude:
# Most modules are quite large and all contained in one class. This is OK.
- 'modules/**/*'
Style/NumericLiterals:
Enabled: false
Documentation:
Exclude:
- 'modules/**/*'

View File

@ -33,6 +33,7 @@ and Metasploit's [Common Coding Mistakes](https://github.com/rapid7/metasploit-f
## Code Contributions
* **Do** stick to the [Ruby style guide](https://github.com/bbatsov/ruby-style-guide).
* Similarly, **try** to get Rubocop passing or at least relatively quiet against the files added/modified as part of your contribution
* **Do** follow the [50/72 rule](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) for Git commit messages.
* **Do** create a [topic branch](http://git-scm.com/book/en/Git-Branching-Branching-Workflows#Topic-Branches) to work on instead of working directly on `master`.

View File

@ -37,6 +37,8 @@ group :pcap do
end
group :development do
# Style/sanity checking Ruby code
gem 'rubocop'
# Markdown formatting for yard
gem 'redcarpet'
# generating documentation

View File

@ -13,6 +13,7 @@ GEM
i18n (~> 0.6, >= 0.6.4)
multi_json (~> 1.0)
arel (3.0.2)
ast (2.0.0)
bcrypt (3.1.7)
builder (3.0.4)
database_cleaner (1.1.1)
@ -34,8 +35,13 @@ GEM
nokogiri (1.6.0)
mini_portile (~> 0.5.0)
packetfu (1.1.9)
parser (2.1.9)
ast (>= 1.1, < 3.0)
slop (~> 3.4, >= 3.4.5)
pcaprub (0.11.3)
pg (0.16.0)
powerpack (0.0.9)
rainbow (2.0.0)
rake (10.1.0)
redcarpet (3.0.0)
rkelly-remix (0.0.6)
@ -48,12 +54,20 @@ GEM
rspec-expectations (2.14.2)
diff-lcs (>= 1.1.3, < 2.0)
rspec-mocks (2.14.3)
rubocop (0.23.0)
json (>= 1.7.7, < 2)
parser (~> 2.1.9)
powerpack (~> 0.0.6)
rainbow (>= 1.99.1, < 3.0)
ruby-progressbar (~> 1.4)
ruby-progressbar (1.5.1)
shoulda-matchers (2.3.0)
activesupport (>= 3.0.0)
simplecov (0.5.4)
multi_json (~> 1.0.3)
simplecov-html (~> 0.5.3)
simplecov-html (0.5.3)
slop (3.5.0)
sqlite3 (1.3.9)
timecop (0.6.3)
tzinfo (0.3.37)
@ -83,6 +97,7 @@ DEPENDENCIES
rkelly-remix (= 0.0.6)
robots
rspec (>= 2.12)
rubocop
shoulda-matchers
simplecov (= 0.5.4)
sqlite3

View File

@ -320,6 +320,15 @@ class Msftidy
end
end
# Explicitly skip this check if we're suppressing info messages
# anyway, since it takes a fair amount of time per module to perform.
def check_rubocop
return true if SUPPRESS_INFO_MESSAGES
out = %x{rubocop -n #{@full_filepath}}
ret = $?
info("Fails to pass Rubocop Ruby style guidelines (run 'rubocop #{@full_filepath}' to see violations)") unless ret.exitstatus == 0
end
def check_old_rubies
return true unless CHECK_OLD_RUBIES
return true unless Object.const_defined? :RVM
@ -574,6 +583,7 @@ def run_checks(full_filepath)
tidy.check_vuln_codes
tidy.check_vars_get
tidy.check_newline_eof
tidy.check_rubocop
return tidy
end