# TODO list * Keep HISTORY.md in master up to date ## Before next release * Move code that references rcov out of lib/metrics/hotspots/hotspot_analyzer.rb lib/reporting/graphs/engines/bluff.rb lib/reporting/graphs/engines/gchart.rb lib/reporting/templates/awesome/css/default.css lib/reporting/templates/awesome/index.html.erb lib/reporting/templates/standard/default.css lib/reporting/templates/standard/index.html.erb * Move code that references flog out of lib/configuration.rb lib/metrics/hotspots/analysis/code_issue.rb lib/metrics/hotspots/analysis/scoring_strategies.rb lib/metrics/hotspots/hotspot_analyzer.rb lib/reporting/graphs/engines/bluff.rb lib/reporting/graphs/engines/gchart.rb lib/reporting/templates/awesome/index.html.erb lib/reporting/templates/standard/index.html.erb * Move code that references flay out of lib/metrics/generator.rb lib/metrics/hotspots/analysis/code_issue.rb lib/metrics/hotspots/hotspot_analyzer.rb lib/reporting/graphs/engines/bluff.rb lib/reporting/graphs/engines/gchart.rb lib/reporting/templates/awesome/index.html.erb lib/reporting/templates/standard/index.html.erb * Move code that references churn out of lib/metrics/hotspots/analysis/code_issue.rb lib/metrics/hotspots/hotspot_analyzer.rb lib/metrics/hotspots/init.rb lib/reporting/templates/awesome/index.html.erb lib/reporting/templates/standard/index.html.erb * Move code that references rails_best_practices out of lib/metrics/hotspots/analysis/code_issue.rb lib/metrics/hotspots/hotspot_analyzer.rb lib/reporting/graphs/engines/bluff.rb lib/reporting/graphs/engines/gchart.rb lib/reporting/templates/awesome/index.html.erb lib/reporting/templates/standard/index.html.erb * Move code that references reek out of lib/data_structures/location.rb lib/metrics/hotspots/analysis/code_issue.rb lib/metrics/hotspots/analysis/scoring_strategies.rb lib/metrics/hotspots/hotspot_analyzer.rb lib/reporting/graphs/engines/bluff.rb lib/reporting/graphs/engines/gchart.rb lib/reporting/templates/awesome/index.html.erb lib/reporting/templates/standard/index.html.erb * Move code that references roodi out of lib/metrics/hotspots/analysis/code_issue.rb lib/metrics/hotspots/hotspot_analyzer.rb lib/reporting/graphs/engines/bluff.rb lib/reporting/graphs/engines/gchart.rb lib/reporting/templates/awesome/index.html.erb lib/reporting/templates/standard/index.html.erb * Move code that references saikuro out of lib/metrics/hotspots/analysis/code_issue.rb lib/metrics/hotspots/hotspot_analyzer.rb lib/reporting/templates/awesome/index.html.erb lib/reporting/templates/standard/index.html.erb * Move code that references stats out of lib/reporting/graphs/engines/bluff.rb lib/reporting/graphs/engines/gchart.rb lib/reporting/templates/awesome/index.html.erb lib/reporting/templates/standard/index.html.erb * Review how metric_fu uses each tools to generate metrics, e.g. by shelling out commands, rake task, modifying the output, etc. * Change MetricFu.report.add(metric) to e.g. MetricFu.generate_report(metric) to make clear that this actually runs the tool * Allow the coverage task to specify the command it runs plus any flags (see bundler/capistrano options) * Test against a rails app ## Features * Remove rcov by default * Either allow user to define a command to run a coverage task or supply a directory with coverage results. We can't predict every test setup to run coverage correctly, but we can analyze results. * Look into getting everything to run on RubyParser ~> 3 * Look into adding * https://github.com/metricfu/code_statistics * brakeman https://github.com/metricfu/brakeman * cane https://github.com/square/cane * laser https://github.com/metricfu/laser * Add configurable logger to all output streams * Allow command-line metric_fu to accept parameters, and especially output its version * Color code flog results with scale from: http://jakescruggs.blogspot.com/2008/08/whats-good-flog-score.html * Make running metric_fu on metric_fu less embarrassing * Load all gems at config time so you fail fast if one is missing * Refactor the hotspots code ## Testing * Determine how to test metric_fu against codebases that are not metric_fu, to ensure it works on most applications * This is especially true for rails applications * Re-organize test files structure to align with changed structure of library files * Remove / Modify Devver code from the generators/hotspots_spec and base/hotspot_analzyer_spec * Don't leave around test artifacts such as the folders './foo' and './is set' ## Bugs / Fixes * Fix occasional gem install metric_fu failures such as with ripper in Ruby 1.9 * Fork roodi and correct the yaml * See https://github.com/metricfu/metric_fu/issues/2 about updating gems ## Ruby 1.9 compatibility * Consider `RUBYOPT='-rpsych'` e.g. from https://github.com/jscruggs/metric_fu/pull/77 * Look into using the sexp_processor for ruby parsing in brakeman https://github.com/presidentbeef/brakeman/blob/cdc85962d589fb37e37ed53333bb0b7bd913e028/lib/ruby_parser/bm_sexp_processor.rb ## Misc * Determine if CodeIssue is used, else remove it * Remove references to Ruport from the Devver / Caliper code * Update or move the homepage http://metric-fu.rubyforge.org/ * Is there any reason not to remove the Manifest.txt? * See other documentation code for examples to improve ours: * https://github.com/charliesome/better_errors/blob/master/CONTRIBUTING.md * https://github.com/charliesome/better_errors/blob/master/README.md * Other intersting libraries to consider: * https://gist.github.com/4562865 for generating Flog on ERB templates by jamesmartin * https://github.com/chad/turbulence churn and complexity (flog) * https://github.com/vinibaggio/discover-unused-partials * https://github.com/metricfu/heckle (test mutation) * https://github.com/mbj/mutant (test mutation) * https://github.com/metricfu/gauntlet * https://github.com/metricfu/repodepot-ruby https://twitter.com/jakescruggs/status/70521977303076865 * https://github.com/eladmeidar/rails_indexes * https://github.com/trptcolin/consistency_fail * https://github.com/thoughtbot/appraisal * https://github.com/jenkinsci/rubymetrics-plugin * https://github.com/holman/hopper