Module: Klee

Defined in:
lib/klee.rb,
lib/klee/mcp.rb,
lib/klee/gestalt.rb,
lib/klee/version.rb,
lib/klee/codebase.rb,
lib/klee/concepts.rb,
lib/klee/patterns.rb,
lib/klee/mcp/server.rb,
lib/klee/mcp/version.rb,
lib/klee/collaborators.rb,
lib/klee/concept_index.rb,
lib/klee/file_analyzer.rb,
lib/klee/collaborator_index.rb,
lib/klee/mcp/path_validator.rb,
lib/klee/mcp/tools/explore_concept.rb,
lib/klee/mcp/tools/codebase_summary.rb,
lib/klee/mcp/tools/find_collaborators.rb,
lib/klee/mcp/tools/discover_vocabulary.rb,
lib/klee/mcp/tools/find_concept_clusters.rb,
lib/klee/mcp/tools/check_naming_consistency.rb

Defined Under Namespace

Modules: MCP Classes: Codebase, CollaboratorIndex, Collaborators, ConceptIndex, Concepts, Error, FileAnalyzer, Gestalt, Patterns

Constant Summary collapse

VERSION =
"0.1.2"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.[](object, threshold = 6, patterns: object.respond_to?(:klee_patterns) ? object.klee_patterns : raise(ArgumentError, "You must include patterns to match for #{object.inspect}"), ignored: Class.instance_methods) ⇒ Object



46
47
48
49
50
# File 'lib/klee.rb', line 46

def self.[](object, threshold = 6,
  patterns: object.respond_to?(:klee_patterns) ? object.klee_patterns : raise(ArgumentError, "You must include patterns to match for #{object.inspect}"),
  ignored: Class.instance_methods)
  Gestalt.new(object, patterns: patterns, ignored: ignored).trace(threshold: threshold)
end

.collaborators(const) ⇒ Object



52
53
54
# File 'lib/klee.rb', line 52

def self.collaborators(const)
  Klee::Collaborators.new(const)
end

.concepts(*method_names, modifiers: []) ⇒ Object



29
30
31
# File 'lib/klee.rb', line 29

def self.concepts(*method_names, modifiers: [])
  Concepts.new(*method_names, modifiers: [])
end

.extended(base) ⇒ Object



17
18
19
# File 'lib/klee.rb', line 17

def self.extended(base)
  base.define_method(:klee_patterns) { self.class.klee_patterns }
end

.object_concepts(object, modifiers: []) ⇒ Object

def self.classifier

@classifier ||= ClassifierReborn::Bayes.new "Interesting", "Uninteresting"

end



37
38
39
40
41
42
43
44
# File 'lib/klee.rb', line 37

def self.object_concepts(object, modifiers: [])
  names = if object.respond_to?(:public_instance_methods)
    object.public_instance_methods(false)
  else
    object.public_methods(false)
  end
  concepts(*names, modifiers: modifiers)
end

.patterns(&block) ⇒ Object



25
26
27
# File 'lib/klee.rb', line 25

def self.patterns(&block)
  Patterns.new(&block)
end

.scan(*patterns, ignore: [], threshold: 2) ⇒ Object



56
57
58
# File 'lib/klee.rb', line 56

def self.scan(*patterns, ignore: [], threshold: 2)
  Codebase.new(*patterns, ignore: ignore, threshold: threshold)
end

Instance Method Details

#klee_patterns(&block) ⇒ Object



21
22
23
# File 'lib/klee.rb', line 21

def klee_patterns(&block)
  @klee_patterns ||= Klee.patterns(&block)
end