Ruby 프로젝트에서 사용되지 않은 methods , Classes , CONSTANTS , @instance_variables , @@class_variables 및 $global_variables 찾으십시오.
실행되지 않는 코드는 유지 관리 할 필요가없는 코드입니다.
남은 음식은 정적 분석을 사용하여 이러한 코드를 찾습니다.
그것은 많은 레일에 대한 지원을 포함하여 일부 보석이 당신을 위해 어떻게 호출하는지 알고 있습니다.
이 라인을 응용 프로그램의 보석에 추가하십시오.
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:allow leftovers:skipped , 남은 음식 leftovers:allows leftovers:allowed 사용되지 않은 것으로 메소드 정의를 표시 할 수 있습니다 # leftovers:keep
class MyClass
def my_method # leftovers:keep
true
end
end 이렇게하면 MyClass 사용되지 않지만 My_Method는이 이름의 모든 정의에 대해이 작업을 수행하지는 않습니다. 주석을 추가하는 대신 keep: List에 이름을 추가하십시오.
# leftovers:test_only 별명 leftovers:for_test , leftovers:for_tests , leftovers:test , leftovers:tests , leftovers:testing
의도적으로 테스트에서만 사용되는 비 테스트 디르의 정의를 표시하려면 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: List에 이름을 추가하십시오.
# 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:자세한 내용은 전체 구성 문서를 참조하십시오. 내장 된 구성 파일 또는 예제에 대한이 Repo의 자체 구성을 참조하십시오.
남은 음식은 코드 외부 (아마도 보석에 의해)를 사용하지 않는 것으로 정의하는 방법/상수를보고합니다.
이 이름을 keep: .leftovers.yml 에서 목록에 추가하거나 # leftovers:allow my_method_name
남은 음식은 코드를 실행하지 않으므로 send (예 send(variable_method_name) )에서 EG 변수를 알지 못합니다. (정적 통화를 알고 있습니다 (예 : send(:my_method_name) ).
메소드/패턴을 dynamic: skip: true 에서 .leftovers.yml 에서 true로 목록에 추가하거나 가능성 목록 # leftovers:call my_method_1, my_method_2 .
남은 음식은 이름으로 만 비교되므로 동일한 이름을 가진 여러 정의는 하나만 사용하더라도 사용되는 것으로 계산됩니다.
Haml, Slim & ERB 라인 및 열 번호는 확인하기 전에 파일을 사전 컴파일해야하므로 열 번호가 잘못됩니다.
with_options 방법으로 레일로 복사 한 값을 기반으로 한 동적 통화 및 정의는 남은 음식으로 캡처되지 않습니다.
레포를 확인한 후 bin/setup 실행하여 종속성을 설치하십시오. 그런 다음 rake spec 실행하여 테스트를 실행하십시오.
이 보석을 로컬 컴퓨터에 설치하려면 bundle exec rake install 실행하십시오.
https://github.com/robotdana/leftovers (https://github.com/robotdana/leftovers)에서 버그 보고서 및 풀 요청은 환영합니다.
기존 구성/*. YML을 확장하거나 새 보석을 추가하든 특히 기본 구성의 문제와 개선을 권장합니다. 파일의 이름은 [rubygems name].yml 이고 그 구조는 프로젝트 구성과 동일합니다.
보석은 MIT 라이센스의 조건에 따라 오픈 소스로 제공됩니다.