feat: linting and diagnostics

main
James Spencer 2023-09-29 15:32:15 +01:00
commit 2c743d5652
Signed by: james
SSH Key Fingerprint: SHA256:7tOVvkg3eVqn4GbEInHoSkEG96Cvqgvwx+VHUD9begc
5 changed files with 91 additions and 0 deletions

10
.rubocop.yml Normal file
View File

@ -0,0 +1,10 @@
require:
- standard
- standard-custom
- standard-performance
- rubocop-performance
inherit_gem:
standard: config/base.yml
standard-custom: config/base.yml
standard-performance: config/base.yml

17
.solargraph.yml Normal file
View File

@ -0,0 +1,17 @@
---
include:
- "**/*.rb"
exclude:
- spec/**/*
- test/**/*
- vendor/**/*
- ".bundle/**/*"
require: []
domains: []
reporters:
- rubocop
- require_not_found
- typecheck
require_paths: []
plugins: []
max_files: 5000

7
Gemfile Normal file
View File

@ -0,0 +1,7 @@
source "https://rubygems.org"
group :development do
gem "rdoc"
gem "rubocop"
gem "solargraph"
end

48
README.md Normal file
View File

@ -0,0 +1,48 @@
# Ruby Starter
A super simple Ruby starter project.
Rubocop and Solargraph are included for linting and code completion, respectively and are configured to be used with [Zed](https://zed.dev/).
## Prerequisites
- [Ruby](https://www.ruby-lang.org/en/documentation/installation/)
- [Bundler](https://bundler.io/)
- [StandardRB](https://github.com/standardrb/standard)
## Setup
1. Clone this repository
2. Install dependencies: `bundle install`
3. Write awesome code
## Usage with Zed
Zed is a rough-around-the-edges editor in Beta. It's not very configurable yet,
so we're locked into using Solargraph as our language server. Solargraph is
only officially compatible with [Rubocop](https://rubocop.org/) _(ACAB)_ for linting, but we use our ruleset of choice, [StandardRB] by configuring it in `.rubocop.yml`.
For now, make sure that StandardRB is installed globally, as Zed can't yet reach
into your local Gem's, as far as we are aware.
Solargraph is configured in `.solargraph.yml` to use robocop, but to enable
inline diagnostics and formatting on save you must add the following to your Zed
`settings.json`:
```json
{
"lsp": {
"solargraph": {
"initialization_options": {
"diagnostics": true,
"formatting": true,
}
}
}
}
```
## Documentation
If you'd like to generate some user-friendly documentation, you can run
`rake` on the command line to generate some HTML docs in the `rdoc` directory, made up of your comments and some metadata from your code.

9
Rakefile Normal file
View File

@ -0,0 +1,9 @@
require "rdoc/task"
task default: [:rdoc]
Rake::RDocTask.new do |rdoc|
rdoc.rdoc_dir = "rdoc"
rdoc.title = "rdoc"
rdoc.options << "--line-numbers" << "--inline-source"
rdoc.rdoc_files.include("**/*.rb")
end