

Rubycritic เป็นอัญมณีที่ล้อมรอบอัญมณีการวิเคราะห์แบบคงที่เช่น Reek, Flay และ Flog เพื่อให้รายงานคุณภาพของรหัสทับทิมของคุณ
อัญมณีนี้มีคุณสมบัติเช่น:
ภาพรวมของโครงการของคุณ: 
ดัชนีของไฟล์โครงการที่มีจำนวนกลิ่นตามลำดับ: 
ดัชนีของกลิ่นที่ตรวจพบ: 
เมื่อวิเคราะห์รหัสดังต่อไปนี้:
class Dirty
def awful ( x , y )
if y
@screen = widgets . map { | w | w . each { | key | key += 3 } }
end
end
endโดยทั่วไปแล้วมันจะเปลี่ยนอะไรแบบนี้:

เป็นสิ่งนี้:

มันใช้ระบบควบคุมแหล่งที่มาของคุณ (รองรับ GIT, Mercurial และ Perforce เท่านั้น) เพื่อเปรียบเทียบการเปลี่ยนแปลงที่ไม่มีข้อผูกมัดของคุณกับการกระทำครั้งสุดท้ายของคุณ
คำเตือน : หากรหัสของคุณไม่เป็นอย่างที่คุณคาดหวังว่าจะเป็นหลังจากเรียกใช้ Rubycritic โปรดตรวจสอบระบบควบคุมแหล่งที่มาของคุณ
ชำระเงิน /docs หากคุณต้องการอ่านเพิ่มเติมเกี่ยวกับตัวชี้วัดหลักของเรา
Rubycritic สามารถติดตั้งได้ด้วยคำสั่งต่อไปนี้:
$ gem install rubycriticหากคุณต้องการติดตั้ง Rubycritic โดยใช้ Bundler ให้เพิ่มบรรทัดนี้ใน GemFile ของแอปพลิเคชันของคุณ:
gem "rubycritic" , require : falseแล้วดำเนินการ:
$ bundle การเรียกใช้ rubycritic โดยไม่มีข้อโต้แย้งจะวิเคราะห์ไฟล์ทับทิมทั้งหมดในไดเรกทอรีปัจจุบัน:
$ 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 | โหลดและสร้างอินสแตนซ์แบบกำหนดเอง (S) 2 |
-s / --minimum-score | ตั้งค่าคะแนนต่ำสุด (ลอย: Ex: 96.28), ค่าเริ่มต้น: 0 |
-m / --mode-ci | ใช้โหมด CI 3 |
-b / --branch | ตั้งสาขาเพื่อเปรียบเทียบ |
-t / --maximum-decrease | เกณฑ์สำหรับคะแนนความแตกต่างระหว่างสองสาขา 4 |
--deduplicate-symlinks | de-duplication 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 : เราใช้การกำหนดค่าเริ่มต้นของ flayflog : เราใช้การกำหนดค่าเริ่มต้นของ flog ด้วยการปรับแต่งขนาดเล็กสองสามครั้ง:all : กอง flog ให้รายงานคะแนนในทุกคลาสและวิธีการทั้งหมด หากไม่มีตัวเลือกนี้ flog จะให้ผลลัพธ์ได้ถึงเกณฑ์ที่กำหนดเท่านั้นcontinue : ทำให้ flog ไม่ได้ยกเลิกเมื่อไฟล์ทับทิมไม่สามารถแยกวิเคราะห์ได้methods : กำหนด flog เพื่อข้ามรหัสนอกวิธีการ ป้องกันไม่ให้ flog รายงานเกี่ยวกับ "วิธีการ" private และ protected นอกจากนี้ยังป้องกันไม่ให้ flog รายงานเกี่ยวกับวิธีการรถไฟเช่น before_action และ has_manyหากคุณชอบยามคุณอาจชอบ Guard-Rubycritic มันวิเคราะห์ไฟล์ทับทิมของคุณโดยอัตโนมัติเมื่อมีการแก้ไข
สำหรับการบูรณาการอย่างต่อเนื่องคุณสามารถให้ 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หากคุณต้องการสร้างงาน Rake หลายงาน (เช่นสำหรับท้องถิ่นและสำหรับการกำหนดค่าเฉพาะ 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 สนับสนุนรุ่นทับทิม:
| เวอร์ชันทับทิม | รุ่น Rubycritic ล่าสุด |
|---|---|
| 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 ไม่จำเป็นต้องเป็นตัวเลือกที่สองสำหรับบริการวิเคราะห์คุณภาพรหัสอื่น ๆ ร่วมกันเราสามารถปรับปรุงและดำเนินการต่อเพื่อสร้างเครื่องมือเมตริกที่ยอดเยี่ยมที่มีอยู่ในระบบนิเวศทับทิม
เนื้อหาที่ดีกว่าอัญมณีได้รับความนิยมหลังจากได้รับคำขอดึง (สวย) ที่เปลี่ยนการออกแบบหน้าเว็บ
ในทำนองเดียวกันคำขอดึงที่ปรับปรุงรูปลักษณ์และความรู้สึกของอัญมณีที่ปรับแต่งการคำนวณการจัดอันดับหรือการแก้ไขปัญหาที่มีอยู่จะได้รับการต้อนรับมากที่สุด เพียงแค่แสดงความคิดเห็นเกี่ยวกับปัญหาและให้ข้อมูลเชิงลึกเกี่ยวกับวิธีการทำงานที่ควรได้รับการชื่นชม ไม่มีการบริจาคเล็กเกินไป
ดูแนวทางการสนับสนุนของ Rubycritic เกี่ยวกับวิธีการดำเนินการต่อ
RubyCritics ผู้เขียนครั้งแรกคือ Guilherme Simões
ทีมหลักในปัจจุบันประกอบด้วย:

Rubycritic ได้รับการดูแลและได้รับการสนับสนุนจาก Whitesmith ทวีตคำถามหรือคำแนะนำของคุณไปที่ @whitesmithco