lint_fu 0.5.0 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +4 -2
- data/bin/lint_fu +2 -86
- data/lib/lint_fu/blessing.rb +40 -0
- data/lib/lint_fu/checker.rb +49 -3
- data/lib/lint_fu/cli/command.rb +48 -0
- data/lib/lint_fu/cli/prune.rb +78 -0
- data/lib/lint_fu/cli/scan.rb +78 -0
- data/lib/lint_fu/cli.rb +52 -0
- data/lib/lint_fu/eidos.rb +35 -0
- data/lib/lint_fu/{model_element_builder.rb → eidos_builder.rb} +8 -3
- data/lib/lint_fu/eidos_container.rb +25 -0
- data/lib/lint_fu/file_range.rb +43 -0
- data/lib/lint_fu/mixins/sexp_instance_methods.rb +57 -9
- data/lib/lint_fu/parser.rb +1 -2
- data/lib/lint_fu/plugins/action_pack/controller_eidos.rb +7 -0
- data/lib/lint_fu/{action_pack/model_controller_builder.rb → plugins/action_pack/controller_eidos_builder.rb} +6 -6
- data/lib/lint_fu/plugins/action_pack.rb +2 -0
- data/lib/lint_fu/{active_record/model_model.rb → plugins/active_record/model_eidos.rb} +3 -3
- data/lib/lint_fu/{active_record/model_model_builder.rb → plugins/active_record/model_eidos_builder.rb} +17 -11
- data/lib/lint_fu/plugins/active_record.rb +2 -0
- data/lib/lint_fu/{rails → plugins/rails}/buggy_eager_load_checker.rb +6 -5
- data/lib/lint_fu/{rails/scan_builder.rb → plugins/rails/issue_builder.rb} +9 -16
- data/lib/lint_fu/plugins/rails/model_application.rb +21 -0
- data/lib/lint_fu/plugins/rails/model_application_factory.rb +31 -0
- data/lib/lint_fu/{rails → plugins/rails}/sql_injection_checker.rb +9 -5
- data/lib/lint_fu/{rails → plugins/rails}/unsafe_find_checker.rb +17 -30
- data/lib/lint_fu/plugins/rails.rb +29 -0
- data/lib/lint_fu/plugins.rb +11 -0
- data/lib/lint_fu/scan.rb +1 -49
- data/lib/lint_fu.rb +13 -8
- data/lint_fu.gemspec +10 -7
- metadata +140 -24
- data/lib/lint_fu/action_pack/model_controller.rb +0 -7
- data/lib/lint_fu/action_pack.rb +0 -2
- data/lib/lint_fu/active_record.rb +0 -2
- data/lib/lint_fu/model_element.rb +0 -48
- data/lib/lint_fu/rails/model_application.rb +0 -16
- data/lib/lint_fu/rails/model_application_builder.rb +0 -32
- data/lib/lint_fu/rails.rb +0 -6
data/lib/lint_fu/action_pack.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
module LintFu
|
2
|
-
# An element of a static analysis model that contains, or consists of, submodels. For instance,
|
3
|
-
# an Application might consists of Models, Controllers and Views.
|
4
|
-
module SuperModel
|
5
|
-
def submodels
|
6
|
-
return [].freeze unless @submodels
|
7
|
-
@submodels.dup.freeze
|
8
|
-
end
|
9
|
-
|
10
|
-
def each_submodel(&block)
|
11
|
-
@submodels ||= Set.new()
|
12
|
-
@submodels.each(&block)
|
13
|
-
end
|
14
|
-
|
15
|
-
def add_submodel(sub)
|
16
|
-
@submodels ||= Set.new()
|
17
|
-
@submodels << sub
|
18
|
-
end
|
19
|
-
|
20
|
-
def remove_submodel(sub)
|
21
|
-
@submodels ||= Set.new()
|
22
|
-
@submodels.delete sub
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
# An element of the static analysis model being created; generally corresponds to a
|
27
|
-
# class (e.g. model, controller or view) within the application being scanned.
|
28
|
-
module ModelElement
|
29
|
-
attr_accessor :supermodel
|
30
|
-
attr_reader :modeled_class_name, :modeled_class_superclass_name, :parse_tree
|
31
|
-
|
32
|
-
#sexp:: [:class, <classname>, <superclass|nil>, <CLASS DEFS>]
|
33
|
-
#namespace:: Array of enclosing module names for this class
|
34
|
-
def initialize(sexp, namespace=nil)
|
35
|
-
@parse_tree = sexp
|
36
|
-
if namespace
|
37
|
-
@modeled_class_name = namespace.join('::') + (namespace.empty? ? '' : '::') + sexp[1].to_s
|
38
|
-
else
|
39
|
-
@modeled_class_name = sexp[1]
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
#Have a pretty string representation
|
44
|
-
def to_s
|
45
|
-
"<<model of #{modeled_class_name}>>"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module LintFu
|
2
|
-
module Rails
|
3
|
-
class ModelApplication
|
4
|
-
include LintFu::ModelElement
|
5
|
-
include LintFu::SuperModel
|
6
|
-
|
7
|
-
def controllers
|
8
|
-
submodels.select { |m| m.kind_of?(LintFu::ActionPack::ModelController) }
|
9
|
-
end
|
10
|
-
|
11
|
-
def models
|
12
|
-
submodels.select { |m| m.kind_of?(LintFu::ActiveRecord::ModelModel) }
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
module LintFu
|
2
|
-
module Rails
|
3
|
-
class ModelApplicationBuilder < ModelElementBuilder
|
4
|
-
def initialize(fs_root)
|
5
|
-
super()
|
6
|
-
|
7
|
-
application = ModelApplication.new(fs_root)
|
8
|
-
|
9
|
-
models_dir = File.join(fs_root, 'app', 'models')
|
10
|
-
builder = ActiveRecord::ModelModelBuilder.new
|
11
|
-
#TODO ensure the Rails app is using ActiveRecord
|
12
|
-
Dir.glob(File.join(models_dir, '**', '*.rb')).each do |f|
|
13
|
-
sexp = Parser.parse_ruby(f)
|
14
|
-
builder.process(sexp)
|
15
|
-
end
|
16
|
-
builder.model_elements.each { |elem| application.add_submodel(elem) }
|
17
|
-
|
18
|
-
controllers_dir = File.join(fs_root, 'app', 'controllers')
|
19
|
-
builder = ActionPack::ModelControllerBuilder.new
|
20
|
-
Dir.glob(File.join(controllers_dir, '**', '*.rb')).each do |f|
|
21
|
-
contents = File.read(f)
|
22
|
-
sexp = RubyParser.new.parse(contents)
|
23
|
-
sexp.file = f
|
24
|
-
builder.process(sexp)
|
25
|
-
end
|
26
|
-
builder.model_elements.each { |elem| application.add_submodel(elem) }
|
27
|
-
|
28
|
-
self.model_elements << application
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
data/lib/lint_fu/rails.rb
DELETED
@@ -1,6 +0,0 @@
|
|
1
|
-
require 'lint_fu/rails/model_application'
|
2
|
-
require 'lint_fu/rails/model_application_builder'
|
3
|
-
require 'lint_fu/rails/buggy_eager_load_checker'
|
4
|
-
require 'lint_fu/rails/sql_injection_checker'
|
5
|
-
require 'lint_fu/rails/unsafe_find_checker'
|
6
|
-
require 'lint_fu/rails/scan_builder'
|