diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..6dc40f9 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,24 @@ + + + + +RuboCop v[RUBOCOP-VERSION] Release Details: https://github.com/rubocop-hq/rubocop/releases/tag/v[RUBOCOP-VERSION] diff --git a/.gitignore b/.gitignore index cec3cb5..01f4627 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ +.tmp/ +vendor/ *.gem Gemfile.lock diff --git a/.rubocop.yml b/.rubocop.yml index ae05986..2a442ec 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,5 +1,8 @@ +require: + - rubocop-performance + AllCops: - TargetRubyVersion: 2.3 + TargetRubyVersion: 2.5 Exclude: - bin/**/* - exe/**/* @@ -8,39 +11,134 @@ AllCops: - vendor/**/* - tmp/**/* +Gemspec/DateAssignment: + Enabled: true -Layout/AlignHash: - EnforcedHashRocketStyle: table -Layout/IndentationWidth: + +Layout/BeginEndAlignment: + Enabled: true +Layout/EmptyComment: + Enabled: false +Layout/EmptyLinesAroundAttributeAccessor: + Enabled: true +Layout/EndAlignment: Severity: error -Layout/IndentArray: +Layout/FirstArrayElementIndentation: EnforcedStyle: consistent -Layout/IndentHash: +Layout/FirstHashElementIndentation: EnforcedStyle: consistent +Layout/HashAlignment: + EnforcedHashRocketStyle: table +Layout/IndentationWidth: + Severity: error +Layout/LineLength: + Max: 100 + Severity: warning Layout/MultilineMethodCallIndentation: EnforcedStyle: indented Layout/MultilineOperationIndentation: EnforcedStyle: indented -Layout/EmptyComment: - Enabled: false -Layout/EndAlignment: - Severity: error +Layout/SpaceAroundMethodCallOperator: + Enabled: true +Layout/SpaceBeforeBrackets: + Enabled: true +Layout/SpaceInsideHashLiteralBraces: + Enabled: true +Lint/AmbiguousAssignment: + Enabled: true +Lint/BinaryOperatorWithIdenticalOperands: + Enabled: true +Lint/ConstantDefinitionInBlock: + Enabled: true +Lint/DeprecatedConstants: + Enabled: true +Lint/DeprecatedOpenSSLConstant: + Enabled: true +Lint/DuplicateBranch: + Enabled: true +Lint/DuplicateElsifCondition: + Enabled: true +Lint/DuplicateRegexpCharacterClassElement: + Enabled: true +Lint/DuplicateRequire: + Enabled: true +Lint/DuplicateRescueException: + Enabled: true +Lint/EmptyBlock: + Enabled: true +Lint/EmptyClass: + Enabled: true +Lint/EmptyConditionalBody: + Enabled: true +Lint/EmptyFile: + Enabled: true +Lint/FloatComparison: + Enabled: true +Lint/HashCompareByIdentity: + Enabled: true +Lint/IdentityComparison: + Enabled: true +Lint/LambdaWithoutLiteralBlock: + Enabled: true +Lint/MissingSuper: + Enabled: false +Lint/MixedRegexpCaptureTypes: + Enabled: false +Lint/NestedPercentLiteral: + Enabled: true +Lint/NoReturnInBeginEndBlocks: + Enabled: true +Lint/NumberedParameterAssignment: + Enabled: true +Lint/OrAssignmentToConstant: + Enabled: true +Lint/OutOfRangeRegexpRef: + Enabled: true +Lint/RaiseException: + Enabled: true +Lint/RedundantDirGlobSort: + Enabled: true +Lint/RedundantSafeNavigation: + Enabled: true +Lint/SelfAssignment: + Enabled: true +Lint/StructNewOverride: + Enabled: true +Lint/SymbolConversion: + Enabled: true +Lint/ToEnumArguments: + Enabled: false +Lint/TopLevelReturnWithArgument: + Enabled: true +Lint/TrailingCommaInAttributeDeclaration: + Enabled: true +Lint/TripleQuotes: + Enabled: true +Lint/UnexpectedBlockArity: + Enabled: true +Lint/UnmodifiedReduceAccumulator: + Enabled: true Lint/UnreachableCode: Severity: error +Lint/UnreachableLoop: + Enabled: true +Lint/UselessMethodDefinition: + Enabled: true +Lint/UselessTimes: + Enabled: true +Lint/Void: + Enabled: true Metrics/AbcSize: Max: 21 Metrics/BlockLength: Exclude: - - spec/**/* + - !ruby/regexp /^spec/ Metrics/ClassLength: Max: 240 -Metrics/LineLength: - Max: 100 - Severity: warning Metrics/MethodLength: CountComments: false Max: 20 @@ -57,32 +155,119 @@ Naming/FileName: Enabled: false Naming/MemoizedInstanceVariableName: EnforcedStyleForLeadingUnderscores: optional -Naming/UncommunicativeMethodParamName: - AllowedNames: - - _ + + +Performance/AncestorsInclude: + Enabled: false +Performance/ArraySemiInfiniteRangeSlice: + Enabled: true +Performance/BigDecimalWithNumericArgument: + Enabled: true +Performance/BlockGivenWithExplicitBlock: + Enabled: true +Performance/ChainArrayAllocation: + Enabled: true +Performance/CollectionLiteralInLoop: + Enabled: true +Performance/ConstantRegexp: + Enabled: true +Performance/MethodObjectAsBlock: + Enabled: true +Performance/RedundantSortBlock: + Enabled: true +Performance/RedundantStringChars: + Enabled: true +Performance/ReverseFirst: + Enabled: true +Performance/SortReverse: + Enabled: false +Performance/Squeeze: + Enabled: true +Performance/StringInclude: + Enabled: true +Performance/Sum: + Enabled: true Style/AccessModifierDeclarations: Enabled: false +Style/AccessorGrouping: + Enabled: true Style/Alias: EnforcedStyle: prefer_alias_method Style/AndOr: Severity: error -Style/FrozenStringLiteralComment: - EnforcedStyle: always +Style/ArgumentsForwarding: + Enabled: false +Style/ArrayCoercion: + Enabled: true +Style/BisectedAttrAccessor: + Enabled: true +Style/CaseLikeIf: + Enabled: true +Style/StringChars: + Enabled: true +Style/ClassAndModuleChildren: + Enabled: true +Style/ClassEqualityComparison: + Enabled: true +Style/CollectionCompact: + Enabled: true +Style/CombinableLoops: + Enabled: true +Style/DocumentDynamicEvalDefinition: + Enabled: true Style/Documentation: Enabled: false Style/DoubleNegation: Enabled: false +Style/EndlessMethod: + Enabled: true +Style/ExplicitBlockArgument: + Enabled: false +Style/ExponentialNotation: + Enabled: true +Style/FormatStringToken: + Enabled: true +Style/FrozenStringLiteralComment: + EnforcedStyle: always +Style/GlobalStdStream: + Enabled: true Style/GuardClause: Enabled: false +Style/HashAsLastArrayItem: + Enabled: true +Style/HashConversion: + Enabled: true +Style/HashEachMethods: + Enabled: true +Style/HashExcept: + Enabled: true +Style/HashLikeCase: + Enabled: true Style/HashSyntax: EnforcedStyle: hash_rockets Severity: error +Style/HashTransformKeys: + Enabled: false +Style/HashTransformValues: + Enabled: true +Style/IfWithBooleanLiteralBranches: + Enabled: true +Style/KeywordParametersOrder: + Enabled: true +Style/MixinUsage: + Enabled: true Style/ModuleFunction: Enabled: false Style/MultilineTernaryOperator: Severity: error +Style/NegatedIfElseCondition: + Enabled: true +Style/NilLambda: + Enabled: true +Style/OptionalBooleanParameter: + Enabled: true Style/PercentLiteralDelimiters: PreferredDelimiters: "%q": "{}" @@ -92,16 +277,42 @@ Style/PercentLiteralDelimiters: "%w": "()" "%W": "()" "%x": "()" +Style/RedundantArgument: + Enabled: true +Style/RedundantAssignment: + Enabled: true +Style/RedundantFetchBlock: + Enabled: false +Style/RedundantFileExtensionInRequire: + Enabled: true +Style/RedundantRegexpCharacterClass: + Enabled: true +Style/RedundantRegexpEscape: + Enabled: true +Style/RedundantSelfAssignment: + Enabled: true Style/RegexpLiteral: EnforcedStyle: percent_r Style/RescueModifier: Enabled: false +Style/SafeNavigation: + Enabled: true Style/SignalException: EnforcedStyle: only_raise +Style/SingleArgumentDig: + Enabled: true +Style/SlicingWithRange: + Enabled: false +Style/SoleNestedConditional: + Enabled: true +Style/StringConcatenation: + Enabled: true Style/StringLiterals: EnforcedStyle: double_quotes Style/StringLiteralsInInterpolation: EnforcedStyle: double_quotes +Style/SwapValues: + Enabled: true Style/SymbolArray: EnforcedStyle: brackets Style/TrailingCommaInArrayLiteral: diff --git a/Gemfile b/Gemfile index bb94df8..b1cf1df 100644 --- a/Gemfile +++ b/Gemfile @@ -2,3 +2,6 @@ source "https://rubygems.org" gemspec + +# To cache all transitive dependencies of Jekyll in Travis jobs +gem "jekyll" diff --git a/History.markdown b/History.markdown new file mode 100644 index 0000000..f2e9859 --- /dev/null +++ b/History.markdown @@ -0,0 +1,27 @@ +## 0.12.0 / 2021-09-16 + +### Minor Enhancements + + * Require RuboCop v1.18.x (#22) + * Have AllCops target Ruby 2.4 in `.rubocop.yml` (#19) + +### Development Fixes + + * chore(ci): Test against Ruby 2.5 (#18) + +## 0.11.0 / 2020-03-19 + +### Minor Enhancements + + * Bump supported RuboCop version: v0.68.0 - 0.80.x (#16) + +### Development Fixes + + * Test repos with Travis CI (#17) + +## 0.10.0 / 2019-06-16 + +### Minor Enhancements + + * Bump supported RuboCop version: v0.68.0 - 0.69.x (#12) + * Bump supported RuboCop version: v0.68.0 - 0.71.x (#15) diff --git a/README.md b/README.md index dc53a18..1d7b10b 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ A RuboCop extension to enforce common code style in Jekyll and Jekyll plugins. [![Gem Version](https://img.shields.io/gem/v/rubocop-jekyll.svg?label=Latest%20Release)][rubygems] -[![RuboCop Support](https://img.shields.io/badge/Rubocop%20Support-0.57.2%20--%200.62.x-green.svg)][rubocop-releases] +[![RuboCop Support](https://img.shields.io/badge/RuboCop%20Support-1.18.x-green.svg)][rubocop-releases] [rubygems]: https://rubygems.org/gems/rubocop-jekyll [rubocop-releases]: https://github.com/rubocop-hq/rubocop/releases @@ -23,12 +23,12 @@ or if you prefer Bundler, add it to your `Gemfile` or `gemspec` ```ruby # Gemfile -gem "rubocop-jekyll", "~> 0.5.0" +gem "rubocop-jekyll", "~> 0.12.0" ``` ```ruby # .gemspec -spec.add_development_dependency "rubocop-jekyll", "~> 0.5.0" +spec.add_development_dependency "rubocop-jekyll", "~> 0.12.0" ``` and run `bundle install` diff --git a/lib/rubocop-jekyll.rb b/lib/rubocop-jekyll.rb index c9f0571..26a52c0 100644 --- a/lib/rubocop-jekyll.rb +++ b/lib/rubocop-jekyll.rb @@ -1,4 +1,4 @@ # frozen_string_literal: true path_to_cops = File.join(File.expand_path("rubocop", __dir__), "cop", "**", "*.rb") -Dir[path_to_cops].each { |cop| require cop } +Dir[path_to_cops].sort.each { |cop| require cop } diff --git a/rubocop-jekyll.gemspec b/rubocop-jekyll.gemspec index efe51f9..becefc0 100644 --- a/rubocop-jekyll.gemspec +++ b/rubocop-jekyll.gemspec @@ -4,10 +4,10 @@ $LOAD_PATH.unshift File.expand_path("lib", __dir__) Gem::Specification.new do |s| s.name = "rubocop-jekyll" - s.version = "0.5.0" + s.version = "0.12.0" s.authors = ["Ashwin Maroli"] s.email = ["ashmaroli@gmail.com"] - s.homepage = "https://github.com/ashmaroli/rubocop-jekyll" + s.homepage = "https://github.com/jekyll/rubocop-jekyll" s.license = "MIT" s.summary = "Code style check for Jekyll and Jekyll plugins" s.description = "A RuboCop extension to enforce common code style in Jekyll and Jekyll plugins" @@ -17,7 +17,8 @@ Gem::Specification.new do |s| end s.require_paths = ["lib"] - s.required_ruby_version = ">= 2.3.0" + s.required_ruby_version = ">= 2.5.0" - s.add_runtime_dependency "rubocop", ">= 0.57.2", "< 0.63.0" + s.add_runtime_dependency "rubocop", "~> 1.18.0" + s.add_runtime_dependency "rubocop-performance", "~> 1.2" end