Project

debtective

0.0
No release in over a year
Find TODOs and compute debt size
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

Runtime

>= 1.13.0
>= 0
 Project Readme

Debtective

Find legacy code so you don't forget to pay off your debts! 💰

Usage

#️⃣ Comments

Overall, comments are a good clue to find smelly code that could be rewritten to become understandable without comments.

Morehover, TODO and FIXME comments indicate a debt that needs to be repaid.

Run it with:

bundle exec debtective --comments

This outputs the comments in the stdout and in a comments.json file, with useful information such as<<>> author and date, type, size of the associated statement, etc.

If you are only interested in the comments.json file, pass the --quiet option so that nothing is logged to stdout.

You can filter comments by including and excluding paths:

# find only comments in app/models and app/controllers
# excepting those in app/models/concerns and app/controllers/concerns
bundle exec debtective --comments \
  --include app/models app/controllers \
  --exclude app/models/concerns app/controllers/concerns

You can filter comments by author:

# find only your comments (rely on local git configuration)
bundle exec debtective --comments --me

# find only Jane Doe's comments
bundle exec debtective --comments --user "Jane Doe"

You can filter comments by type:

type example
todo # TODO: do that
fixme # FIXME: do that
yard # @return Float
offense # rubocop:disable Metrics/MethodLength
magic # frozen_string_literal: true
shebang #!/usr/bin/env ruby
note # hello world (any other comment)

Use --<type> to include a type or --no-<type> to exclude a type:

# find only todo and fixme comments
bundle exec debtective --comments --todo --fixme

# find all comments except magic and shebang ones
bundle exec debtective --comments --no-magic --no-shebang

Of course all options can be comined together:

# find only your todo and fixme comments in app/models and app/controllers
# except those in app/models/concerns and app/controllers/concerns
bundle exec debtective --comments --me --todo --fixme \
  --include app/models app/controllers \
  --exclude app/models/concerns app/controllers/concerns

💎 Gems

Find gems that are not maintained anymore.

⚠️ Upcoming feature!

Installation

Add this line to your application's Gemfile:

group :development do
  gem "debtective"
end

And then execute:

$ bundle

Or install it yourself as:

$ gem install debtective

Contributing

This gem is still a work in progress. You can use GitHub issue to start a discussion.

License

The gem is available as open source under the terms of the MIT License.