

Rubycritic은 Ruek, Flay 및 Flog와 같은 정적 분석 보석을 감싸서 Ruby 코드의 품질 보고서를 제공하는 보석입니다.
이 보석은 다음과 같은 기능을 제공합니다.
프로젝트 개요 : 
각각의 냄새가있는 프로젝트 파일의 색인 : 
감지 된 냄새의 색인 : 
다음과 같은 코드를 분석 할 때 :
class Dirty
def awful ( x , y )
if y
@screen = widgets . map { | w | w . each { | key | key += 3 } }
end
end
end기본적으로 다음과 같이 회전합니다.

다음과 같은 것 :

소스 제어 시스템 (GIT, Mercurial 및 Perforce 만 현재 지원됨)을 사용하여 현재 커밋되지 않은 변경 사항을 마지막 커밋과 비교합니다.
경고 : Rubycritic을 실행 한 후 코드가 예상되는 경우 소스 제어 시스템 stash를 확인하십시오.
우리의 핵심 메트릭에 대해 더 많이 읽으려면 /docs 확인하십시오.
Rubycritic은 다음 명령으로 설치할 수 있습니다.
$ gem install rubycriticBundler를 사용하여 Rubycritic을 설치하려면이 라인을 응용 프로그램의 Gemfile에 추가하십시오.
gem "rubycritic" , require : false그런 다음 실행 :
$ bundle 인수가없는 rubycritic 실행하면 현재 디렉토리의 모든 Ruby 파일이 분석됩니다.
$ rubycritic 또는 파일 및 디렉토리 목록을 rubycritic 전달할 수 있습니다. 분석은 제공된 파일 및 디렉토리로 범위가납니다.
$ rubycritic app lib/foo.rb명령 줄 옵션 실행의 전체 목록은 다음과 같습니다.
$ rubycritic --help| 명령 플래그 | 설명 |
|---|---|
-v / --version | 현재 버전과 종료를 표시합니다 |
-p / --path | 보고서가 저장되는 경로 설정 (기본적으로 TMP/Rubycritic) |
--coverage-path | SimpleCov가 저장되는 경로 (기본적으로 ./coverage) |
-f / --format | 주어진 형식의 보고서 1 |
--custom-format path:classname | 로드 및 인스턴스화 사용자 정의 포맷터 2 |
-s / --minimum-score | 최소 점수 (플로트 : 예 : 96.28), 기본값 : 0을 설정하십시오 |
-m / --mode-ci | CI 모드 3을 사용하십시오 |
-b / --branch | 비교할 분기를 설정하십시오 |
-t / --maximum-decrease | 두 가지의 점수 차이에 대한 임계 값 4 |
--deduplicate-symlinks | 최종 목표를 기반으로 Symlinks를 제거합니다 |
--suppress-ratings | 문자 등급을 억제합니다 |
--no-browser | 브라우저로 HTML 보고서를 열지 마십시오 |
html (기본값; 브라우저에서 열립니다)jsonconsolelint-b 참조하십시오-b , 기본값으로 만 작동합니다 : 0 구성 파일을 사용할 수도 있습니다. 프로젝트 루트 경로에서 .rubycritic.yml 만듭니다.
다음은 다음과 같습니다.
mode_ci :
enabled : true # default is false
branch : ' production ' # default is main
branch : ' production ' # default is main
path : ' /tmp/mycustompath ' # Set path where report will be saved (tmp/rubycritic by default)
coverage_path : ' /tmp/coverage ' # Set path where SimpleCov coverage will be saved (./coverage by default)
threshold_score : 10 # default is 0
deduplicate_symlinks : true # default is false
suppress_ratings : true # default is false
no_browser : true # default is false
formats : # Available values are: html, json, console, lint. Default value is html.
- console
minimum_score : 95 # default is 0
paths : # Files to analyse. Churn calculation is scoped to these files when using Git SCM.
- ' app/controllers/ '
- ' app/models/ 'Reek : RubyCritic Reek 의 기본 구성로드 메커니즘을 사용합니다. 즉, 기존 Reek 구성 파일이있는 경우 프로젝트 루트에 넣을 수 있으며 RubyCritic 구성을 존중합니다.flay : flay 의 기본 구성을 사용합니다.flog : 우리는 flog 의 기본 구성을 몇 가지 작은 조정으로 사용합니다.all : 모든 클래스와 방법에 대한 점수를보고하는 flog . 이 옵션이 없으면 flog 특정 임계 값까지 결과를 제공합니다.continue : 루비 파일을 구문 분석 할 수 없을 때 flog 중단되지 않도록합니다.methods : 메소드 외부에서 코드를 건너 뛰는 flog 구성합니다. flog private 및 protected "방법"에 대한보고를 방지합니다. 또한 flog before_action 및 has_many 와 같은 Rails 방법에 대한보고를 방지합니다.당신이 경비를 좋아한다면 당신은 가드-루비 크리 트를 좋아할 것입니다. 루비 파일이 수정 될 때 자동으로 분석합니다.
지속적인 통합을 위해 Jenkins Ci에게 스핀을 줄 수 있습니다. 그것으로, 당신은 자신의 (가난한 사람) 코드 환경을 쉽게 구축 할 수 있습니다!
Rubycritic을 가장 간단한 형태로 Rake 명령으로 사용할 수 있습니다.
require "rubycritic/rake_task"
RubyCritic :: RakeTask . new사용 가능한 모든 구성 옵션을 사용하는보다 정교한 레이크 작업은 다음과 같습니다.
RubyCritic :: RakeTask . new do | task |
# Name of RubyCritic task. Defaults to :rubycritic.
task . name = 'something_special'
# Glob pattern to match source files. Defaults to FileList['.'].
task . paths = FileList [ 'vendor/**/*.rb' ]
# You can pass all the options here in that are shown by "rubycritic -h" except for
# "-p / --path" since that is set separately. Defaults to ''.
task . options = '--mode-ci --format json'
# Defaults to false
task . verbose = true
# Fail the Rake task if RubyCritic doesn't pass. Defaults to true
task . fail_on_error = true
endRubycritic은 기본적으로 브라우저로 생성 된 보고서를 열려고합니다. 이를 원하지 않으면 해당 옵션을 설정 하여이 동작을 방지 할 수 있습니다.
RubyCritic :: RakeTask . new do | task |
task . options = '--no-browser'
end여러 갈퀴 작업 (예 : Local & CI- 특이 적 구성의 경우)을 만들려면 그렇게 할 수 있습니다! 이를 결정한 경우 각 작업에 대한 명확한 설명을 제공해야합니다.
# for local
RubyCritic :: RakeTask . new ( "local" , "Run RubyCritic (local configuration)" do | task |
# ...
end
# for CI
RubyCritic :: RakeTask . new ( "ci" , "Run RubyCritic (CI configuration)" do | task |
task . options = "--mode-ci"
# ...
end Formatters를 참조하십시오
Rubycritic은 Ruby 버전을 지원하고 있습니다.
| 루비 버전 | 최신 루비 크리 트 버전 |
|---|---|
| 2.4 | v4.7.0 |
| 2.5 | v4.7.0 |
| 2.6 | v4.7.0 |
| 2.7 | v4.9.x |
| 3.0 | 최신 |
| 3.1 | 최신 |
| 3.2 | 최신 |
| 3.3 | 최신 |
Rubycritic은 다른 코드 품질 분석 서비스에 대한 두 번째 선택을 유지할 필요가 없습니다. 함께, 우리는 그것을 개선하고 Ruby Ecosystem에서 사용할 수있는 훌륭한 코드 메트릭 도구를 계속 구축 할 수 있습니다.
아마도 더 나은 _errors 보석은 페이지 디자인을 변경 한 (정말 멋진) 풀 요청을받은 후에 만 인기를 얻었습니다.
마찬가지로, 보석의 모양과 느낌을 향상시키는 풀 요청, 등급 계산을 조정하거나 기존 문제를 해결하는 것이 가장 환영받을 것입니다. 문제에 대해 언급하고 무언가가 어떻게 작동 해야하는지에 대한 통찰력을주는 것만으로도 감사 할 것입니다. 기여는 너무 작지 않습니다.
진행 방법에 대한 Rubycritic의 기고 가이드 라인을 참조하십시오.
RubyCritics 최초 저자는 Guilherme Simões였습니다.
현재 핵심 팀은 다음으로 구성됩니다.

Rubycritic은 Whitesmith가 유지 관리하고 자금을 지원합니다. @whitesmithco에 질문이나 제안을 트윗하십시오.