ค้นหา methods ที่ไม่ได้ใช้ Classes CONSTANTS @instance_variables , @@class_variables และ $global_variables ในโครงการทับทิมของคุณ
รหัสที่ไม่เคยถูกเรียกใช้เป็นรหัสที่คุณไม่จำเป็นต้องดูแลรักษา
ของเหลือจะใช้การวิเคราะห์แบบคงที่เพื่อค้นหาบิตของรหัสเหล่านี้สำหรับคุณ
เป็นที่ทราบว่าวิธีการเรียกอัญมณีบางอย่างสำหรับคุณรวมถึงการสนับสนุนทางรถไฟส่วนใหญ่
เพิ่มบรรทัดนี้ใน Gemfile ของแอปพลิเคชันของคุณ:
gem 'leftovers' , require : falseแล้วดำเนินการ:
$ bundle
หรือติดตั้งด้วยตัวเองเป็น:
$ gem install leftovers
เรียกใช้ leftovers ในบรรทัดคำสั่งของคุณในรูทของโครงการของคุณ สิ่งนี้จะส่งออกความคืบหน้าเนื่องจากรวบรวมการโทร/การอ้างอิงและคำจำกัดความในโครงการของคุณ จากนั้นจะส่งออกวิธีการใด ๆ ที่กำหนด (หรือคลาส ฯลฯ ) ซึ่งไม่ได้เรียก
$ leftovers
checked 25 files, collected 2473 calls, 262 definitions
Only directly called in tests:
lib/hello_world.rb:10:6 tested_unused_method def tested_unused_method
lib/hello_world.rb:18:6 another_tested_unused_method def another_tested_unused_method
Not directly called at all:
lib/hello_world.rb:6:6 generated_method= attr_accessor :generated_method
lib/hello_world.rb:6:6 generated_method attr_accessor :generated_method
how to resolve: https://github.com/robotdana/leftovers/tree/main/Readme.md#how-to-resolve
หากมีผลลัพธ์จำนวนมากลองใช้ --write-todo
เมื่อเรียกใช้ leftovers คุณจะได้รับรายการวิธีการคงที่และคำจำกัดความของตัวแปรที่คิดว่าไม่ได้ใช้ ตอนนี้อะไร?
พวกเขาถูกทิ้งไว้โดยไม่ได้ตั้งใจเมื่อถอดสายออก:
พวกเขาถูกเรียกว่าแบบไดนามิก:
# leftovers:call my_unused_method ; หรือ# leftovers:keepพวกเขาถูกกำหนดโดยเจตนาเพื่อใช้โดยการทดสอบเท่านั้น:
# leftovers:test_onlyพวกเขามาจากไฟล์ที่ไม่ควรตรวจสอบโดยที่เหลือ:
exclude_paths: รายการในไฟล์. leftovers.yml หากมีที่อยู่มากเกินไปเมื่อเพิ่มที่เหลือลงในโครงการของคุณลองเรียกใช้ leftovers --write-todo ,
การเรียกใช้ leftovers --write-todo จะสร้างไฟล์การกำหนดค่าเพิ่มเติมซึ่งจะช่วยให้คำจำกัดความที่ไม่ได้รับการตรวจจับที่ตรวจพบทั้งหมดซึ่งจะถูกอ่านในการรัน leftovers ต่อไปโดยไม่ต้องแจ้งรายการใด ๆ ที่กล่าวถึงในนั้น
ส่งไฟล์นี้เพื่อให้คุณ/ทีมของคุณสามารถค่อยๆจัดการกับรายการเหล่านี้ในขณะที่ยังคงมีการแจ้งเตือนที่เหลือให้คุณไปยังรายการที่ไม่ได้ใช้ใหม่
# leftovers:keep นามแฝง leftovers:keeps , leftovers:skip , leftovers:skips , leftovers:skipped , leftovers:allow , leftovers:allows ,, leftovers:allowed ให้ทำเครื่องหมายคำจำกัดความของวิธีการที่ไม่ได้ใช้, เพิ่มความคิดเห็น # leftovers:keep ในบรรทัดเดียวกับคำจำกัดความ
class MyClass
def my_method # leftovers:keep
true
end
end สิ่งนี้จะรายงาน MyClass ไม่ได้ใช้ แต่ไม่ใช่ my_method ที่จะทำสิ่งนี้สำหรับคำจำกัดความทั้งหมดของชื่อนี้แทนที่จะเพิ่มความคิดเห็นเพิ่มชื่อลงใน keep: รายการในไฟล์การกำหนดค่า
# leftovers:test_only นามแฝง leftovers:for_test , leftovers:for_tests , leftovers:test , leftovers:tests , leftovers:testing
หากต้องการทำเครื่องหมายคำจำกัดความจาก DIR ที่ไม่ใช่การทดสอบซึ่งใช้โดยการทดสอบโดยเจตนาใช้ leftovers:test_only
# app/my_class.rb
class MyClass
def my_method # leftovers:test_only
true
end
end # spec/my_class_spec.rb
describe MyClass do
it { expect ( subject . my_method ) . to be true }
end สิ่งนี้จะพิจารณา my_method ที่จะใช้แม้ว่ามันจะถูกเรียกโดยการทดสอบเท่านั้น
ในการทำเช่นนี้สำหรับคำจำกัดความทั้งหมดของชื่อนี้แทนที่จะเพิ่มความคิดเห็นให้เพิ่มชื่อลงใน test_only: รายการในไฟล์การกำหนดค่า
# leftovers:call นามแฝง leftovers:calls เพื่อทำเครื่องหมายการโทรที่ไม่ใช้ค่าตัวอักษรใช้ leftovers:call ด้วยชื่อวิธีการที่แสดงรายการ
method = [ :puts , :warn ] . sample # leftovers:call puts, warn
send ( method , 'text' ) สิ่งนี้จะพิจารณา puts และ warn ทั้งคู่ได้รับการเรียก
# leftovers:dynamic:* เพื่อทำเครื่องหมายการเรียกแบบไดนามิกสำหรับค่าแฮชตัวอักษรและค่าอาร์เรย์โดยไม่ต้องแจกแจงทุกอย่างในความคิดเห็นอีกครั้งให้ใช้ leftovers:dynamic: ในบรรทัดเดียวกับจุดเริ่มต้นของอาร์เรย์หรือแฮช
[ # leftovers:dynamic:call_attributes
:user ,
:admin
] . map { | method | send ( " #{ method } _attributes" ) } ด้วยการกำหนดค่าต่อไปนี้จับ name: value กับ leftovers:dynamic:process_name
dynamic :
name : call_attributes
arguments : ' * '
add_suffix : ' _attributes ' สิ่งนี้จะพิจารณา user_attributes และ admin_attributes ทั้งสองได้ถูกเรียก
การกำหนดค่าถูกอ่านจาก .leftovers.yml ในรูทโครงการของคุณ การปรากฏตัวของมันเป็นทางเลือกและการตั้งค่าทั้งหมดเหล่านี้เป็นทางเลือก
include_paths:exclude_paths:test_paths:requires:precompile:gems:keep:test_only:dynamic:ดูเอกสารการกำหนดค่าที่สมบูรณ์สำหรับรายละเอียด ดูไฟล์ config ในตัวหรือการกำหนดค่าของ repo นี้สำหรับตัวอย่าง
ของเหลือจะรายงานวิธีการ/ค่าคงที่ที่คุณกำหนดที่เรียกว่านอกรหัสของคุณ
เพิ่มชื่อเหล่านี้ลงในรายการ keep: ใน .leftovers.yml หรือเพิ่มความคิดเห็นแบบอินไลน์ด้วย # leftovers:allow my_method_name
ของเหลือไม่ได้เรียกใช้รหัสของคุณดังนั้นไม่ทราบถึงตัวแปรเช่นการโทรเพื่อ send (เช่น send(variable_method_name) ) (ทราบถึงการโทรแบบคงที่ (เช่น send(:my_method_name) ) ดังนั้นการใช้การส่งไปยังวิธีการบายพาสความเป็นส่วนตัวคือ "ดี")
เพิ่มเมธอด/รูปแบบลงใน dynamic: รายการด้วย skip: true ใน .leftovers.yml หรือเพิ่มความคิดเห็นแบบอินไลน์ด้วยรายการความเป็นไปได้ # leftovers:call my_method_1, my_method_2
ของเหลือเปรียบเทียบด้วยชื่อเท่านั้นดังนั้นคำจำกัดความหลายคำที่มีชื่อเดียวกันจะนับเป็นที่ใช้แม้ว่าจะมีเพียงหนึ่งเดียวก็ตาม
หมายเลขบรรทัด Haml, Slim & Erb และหมายเลขคอลัมน์จะไม่ถูกต้องเนื่องจากไฟล์จะต้องมีการคอมไพล์ล่วงหน้าก่อนที่จะตรวจสอบ
การโทรและคำจำกัดความแบบไดนามิกขึ้นอยู่กับค่าที่คัดลอกโดยรถไฟด้วยวิธี with_options ไม่ได้ถูกจับโดยของเหลือ
หลังจากตรวจสอบ repo ให้เรียกใช้ bin/setup เพื่อติดตั้งการพึ่งพา จากนั้นเรียกใช้ rake spec เพื่อเรียกใช้การทดสอบ
ในการติดตั้งอัญมณีนี้ลงบนเครื่องในเครื่องของคุณให้เรียกใช้ bundle exec rake install
รายงานข้อผิดพลาดและคำขอดึงยินดีต้อนรับบน GitHub ที่ https://github.com/robotdana/leftovers
โดยเฉพาะอย่างยิ่งฉันสนับสนุนปัญหาและการปรับปรุงการกำหนดค่าเริ่มต้นไม่ว่าจะเป็นการขยาย config/*. yml ที่มีอยู่หรือเพิ่มอัญมณีใหม่ ไฟล์ควรมีชื่อ [rubygems name].yml และโครงสร้างของมันเหมือนกับการกำหนดค่าโครงการ
อัญมณีมีให้เป็นโอเพ่นซอร์สภายใต้ข้อกำหนดของใบอนุญาต MIT