diff --git a/.github/workflows/deliver.yml b/.github/workflows/deliver.yml
index 7c08fdf..187a81a 100644
--- a/.github/workflows/deliver.yml
+++ b/.github/workflows/deliver.yml
@@ -16,7 +16,7 @@ jobs:
       - name: Set up Ruby
         uses: ruby/setup-ruby@v1
         with:
-          ruby-version: 2.5
+          ruby-version: 3.1
       - name: Install dependencies
         run: bundle install
       - name: Run tests
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index a84034e..92ac0b1 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -20,7 +20,7 @@ jobs:
       - name: Set up Ruby
         uses: ruby/setup-ruby@v1
         with:
-          ruby-version: 2.5
+          ruby-version: 3.1
       - name: Install dependencies
         run: bundle install
       - name: Run tests
diff --git a/.gitignore b/.gitignore
index 4d0a0f3..4dcc85b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,4 @@
 /tmp/
 mapotempo_rubocop-*.gem
 .byebug_history
+.devcontainer
\ No newline at end of file
diff --git a/.rubocop.yml b/.rubocop.yml
index 769e8fb..e6fee5f 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -1,2 +1,5 @@
-  inherit_from:
-    - rubocop-default.yml
+inherit_from:
+  - rubocop-default.yml
+
+AllCops:
+  NewCops: disable
diff --git a/.ruby-version b/.ruby-version
new file mode 100644
index 0000000..0aec50e
--- /dev/null
+++ b/.ruby-version
@@ -0,0 +1 @@
+3.1.4
diff --git a/Gemfile.lock b/Gemfile.lock
index 7dd1066..9b6b4b3 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,51 +1,63 @@
 PATH
   remote: .
   specs:
-    mapotempo_rubocop (0.0.0)
-      rubocop (~> 0.81.0)
-      rubocop-minitest (~> 0.8.1)
-      rubocop-performance (~> 1.5.2)
+    mapotempo_rubocop (0.1.0)
+      rubocop (~> 1.56.1)
+      rubocop-minitest (~> 0.31.0)
+      rubocop-performance (~> 1.19.0)
 
 GEM
   remote: https://rubygems.org/
   specs:
-    ast (2.4.1)
+    ast (2.4.2)
+    base64 (0.1.1)
     byebug (11.1.3)
-    jaro_winkler (1.5.4)
-    minitest (5.14.2)
-    minitest-focus (1.2.1)
+    json (2.6.3)
+    language_server-protocol (3.17.0.3)
+    minitest (5.19.0)
+    minitest-focus (1.4.0)
       minitest (>= 4, < 6)
-    parallel (1.19.2)
-    parser (2.7.1.5)
+    parallel (1.23.0)
+    parser (3.2.2.3)
       ast (~> 2.4.1)
-    rainbow (3.0.0)
-    rake (10.5.0)
-    rexml (3.2.4)
-    rubocop (0.81.0)
-      jaro_winkler (~> 1.5.1)
+      racc
+    racc (1.7.1)
+    rainbow (3.1.1)
+    rake (13.0.6)
+    regexp_parser (2.8.1)
+    rexml (3.2.6)
+    rubocop (1.56.1)
+      base64 (~> 0.1.1)
+      json (~> 2.3)
+      language_server-protocol (>= 3.17.0)
       parallel (~> 1.10)
-      parser (>= 2.7.0.1)
+      parser (>= 3.2.2.3)
       rainbow (>= 2.2.2, < 4.0)
-      rexml
+      regexp_parser (>= 1.8, < 3.0)
+      rexml (>= 3.2.5, < 4.0)
+      rubocop-ast (>= 1.28.1, < 2.0)
       ruby-progressbar (~> 1.7)
-      unicode-display_width (>= 1.4.0, < 2.0)
-    rubocop-minitest (0.8.1)
-      rubocop (>= 0.74)
-    rubocop-performance (1.5.2)
-      rubocop (>= 0.71.0)
-    ruby-progressbar (1.10.1)
-    unicode-display_width (1.7.0)
+      unicode-display_width (>= 2.4.0, < 3.0)
+    rubocop-ast (1.29.0)
+      parser (>= 3.2.1.0)
+    rubocop-minitest (0.31.0)
+      rubocop (>= 1.39, < 2.0)
+    rubocop-performance (1.19.0)
+      rubocop (>= 1.7.0, < 2.0)
+      rubocop-ast (>= 0.4.0)
+    ruby-progressbar (1.13.0)
+    unicode-display_width (2.4.2)
 
 PLATFORMS
   ruby
 
 DEPENDENCIES
-  bundler (~> 1.17.3)
+  bundler (~> 2.3.26)
   byebug
   mapotempo_rubocop!
   minitest
   minitest-focus
-  rake (~> 10.0)
+  rake (~> 13.0.6)
 
 BUNDLED WITH
-   1.17.3
+   2.3.26
diff --git a/LICENSE.txt b/LICENSE.txt
index 219247a..816ad03 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2020 Valentin Le Guennec
+Copyright (c) 2023 Valentin Le Guennec
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/mapotempo_rubocop.gemspec b/mapotempo_rubocop.gemspec
index e8ade82..a6db172 100644
--- a/mapotempo_rubocop.gemspec
+++ b/mapotempo_rubocop.gemspec
@@ -19,10 +19,10 @@ Gem::Specification.new do |spec|
   spec.files = Dir['{app,config,db,lib}/**/*', 'LICENSE', 'Rakefile', 'README.md', '*.yml']
   spec.test_files = Dir['test/**/*']
 
-  spec.add_dependency 'rubocop', '~> 0.81.0'
-  spec.add_dependency 'rubocop-minitest', '~> 0.8.1'
-  spec.add_dependency 'rubocop-performance', '~> 1.5.2'
+  spec.add_dependency 'rubocop', '~> 1.56.1'
+  spec.add_dependency 'rubocop-minitest', '~> 0.31.0'
+  spec.add_dependency 'rubocop-performance', '~> 1.19.0'
 
-  spec.add_development_dependency 'bundler', '~> 1.17.3'
-  spec.add_development_dependency 'rake', '~> 10.0'
+  spec.add_development_dependency 'bundler', '~> 2.3.26'
+  spec.add_development_dependency 'rake', '~> 13.0.6'
 end
diff --git a/rubocop-all.yml b/rubocop-all.yml
index 30018c4..0a62506 100644
--- a/rubocop-all.yml
+++ b/rubocop-all.yml
@@ -1,5 +1,5 @@
 AllCops:
-  TargetRubyVersion: 2.5
+  TargetRubyVersion: 3.1
   # Cop names are not displayed in offense messages by default. Change behavior
   # by overriding DisplayCopNames, or by giving the -D/--display-cop-names
   # option.
diff --git a/test/mapotempo_rubocop_test.rb b/test/mapotempo_rubocop_test.rb
index 426c38d..e9a557d 100644
--- a/test/mapotempo_rubocop_test.rb
+++ b/test/mapotempo_rubocop_test.rb
@@ -11,8 +11,8 @@ def test_config_is_correct
     parallel = ENV['RUBOCOP_PARALLEL'] || ENV['CI'] ? '--parallel' : nil
     # parallel option could cause not to use rubocop from bundle
     options = "#{parallel} -f c --config .rubocop.yml --fail-level E --display-only-fail-level-offenses"
-    cmd = "bundle exec rubocop ./* #{options}"
-    o = system(cmd, [:out, :err] => '/dev/null')
+    cmd = "bundle exec rubocop #{options}"
+    o = system(cmd)
     assert o, "New Rubocop offenses added to the project, run: #{cmd}"
   end
 end