Skip to main content

LanguageAdapter

Trait LanguageAdapter 

Source
pub trait LanguageAdapter: Send + Sync {
Show 43 methods // Required methods fn language(&self) -> Language; fn count_panic_calls(&self, file: &ParsedFile) -> usize; fn extract_functions(&self, file: &ParsedFile) -> Vec<FunctionNode>; fn max_nesting_depth(&self, file: &ParsedFile) -> usize; fn count_naming_violations(&self, file: &ParsedFile) -> usize; fn count_deeply_nested_blocks(&self, file: &ParsedFile) -> usize; fn count_debug_calls(&self, file: &ParsedFile) -> usize; fn count_excessive_params( &self, file: &ParsedFile, threshold: usize, ) -> usize; // Provided methods fn count_unsafe_blocks(&self, file: &ParsedFile) -> usize { ... } fn count_magic_numbers(&self, file: &ParsedFile) -> usize { ... } fn count_goroutine_spawns(&self, file: &ParsedFile) -> usize { ... } fn count_defer_in_loop(&self, file: &ParsedFile) -> usize { ... } fn count_go_convention_violations(&self, file: &ParsedFile) -> usize { ... } fn count_python_issues(&self, file: &ParsedFile) -> usize { ... } fn count_java_issues(&self, file: &ParsedFile) -> usize { ... } fn count_ruby_issues(&self, file: &ParsedFile) -> usize { ... } fn count_c_issues(&self, file: &ParsedFile) -> usize { ... } fn count_ts_issues(&self, file: &ParsedFile) -> usize { ... } fn count_js_issues(&self, file: &ParsedFile) -> usize { ... } fn count_swift_issues(&self, file: &ParsedFile) -> usize { ... } fn count_dead_code(&self, file: &ParsedFile) -> usize { ... } fn count_duplicate_imports(&self, file: &ParsedFile) -> usize { ... } fn count_commented_out_code(&self, file: &ParsedFile) -> usize { ... } fn count_todo_markers(&self, file: &ParsedFile) -> usize { ... } fn query_patterns(&self) -> &[&str] { ... } fn batch_captures<'a>( &self, file: &'a ParsedFile, ) -> Vec<Vec<QueryCapture<'a>>> { ... } fn compute_all(&self, file: &ParsedFile) -> AdapterCounts { ... } fn extract_functions_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> Vec<FunctionNode> { ... } fn count_panic_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize { ... } fn count_naming_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize { ... } fn count_debug_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize { ... } fn count_excessive_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize { ... } fn count_unsafe_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize { ... } fn count_magic_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize { ... } fn count_goroutine_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize { ... } fn count_go_convention_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize { ... } fn count_python_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize { ... } fn count_java_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize { ... } fn count_ruby_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize { ... } fn count_c_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize { ... } fn count_ts_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize { ... } fn count_js_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize { ... } fn count_swift_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize { ... }
}
Expand description

LanguageAdapter provides language-specific semantic extraction.

Each supported language has an adapter implementation that knows the tree-sitter query patterns for that language. SignalDetectors use these methods instead of writing per-language queries.

Required Methods§

Provided Methods§

Source

fn count_unsafe_blocks(&self, file: &ParsedFile) -> usize

Source

fn count_magic_numbers(&self, file: &ParsedFile) -> usize

Source

fn count_goroutine_spawns(&self, file: &ParsedFile) -> usize

Count goroutine spawns (Go-specific).

Source

fn count_defer_in_loop(&self, file: &ParsedFile) -> usize

Count defer statements inside for loops (Go-specific).

Source

fn count_go_convention_violations(&self, file: &ParsedFile) -> usize

Count Go convention violations: uppercase error strings, context.Context not first param, if-else with return.

Source

fn count_python_issues(&self, file: &ParsedFile) -> usize

Count Python-specific code issues: wildcard imports, redundant bool comparisons, identity comparison violations, type:ignore comments, legacy string formatting, custom dunder methods, import order.

Source

fn count_java_issues(&self, file: &ParsedFile) -> usize

Count Java-specific code issues: empty catch, missing javadoc, try-finally close, string concat in loop, wildcard imports.

Source

fn count_ruby_issues(&self, file: &ParsedFile) -> usize

Count Ruby-specific code issues: global variables, bare rescue, missing frozen_string_literal, negated if, predicate naming, indent.

Source

fn count_c_issues(&self, file: &ParsedFile) -> usize

Count C/C++ code issues: goto, new-expression, sizeof-type, free-mismatch, malloc-check.

Source

fn count_ts_issues(&self, file: &ParsedFile) -> usize

Count TypeScript code issues: any-type, prefer-interface, no-enum.

Source

fn count_js_issues(&self, file: &ParsedFile) -> usize

Count JavaScript code issues: eval, with, ==/var, alert.

Source

fn count_swift_issues(&self, file: &ParsedFile) -> usize

Count Swift code issues: force-unwrap, try!, implicitly unwrapped optionals.

Source

fn count_dead_code(&self, file: &ParsedFile) -> usize

Count dead code blocks — unreachable code after return/break/continue/panic.

Source

fn count_duplicate_imports(&self, file: &ParsedFile) -> usize

Count duplicate import statements in a file (language-specific).

Source

fn count_commented_out_code(&self, file: &ParsedFile) -> usize

Count commented-out code blocks in the file. Default implementation uses content-based detection.

Source

fn count_todo_markers(&self, file: &ParsedFile) -> usize

Count TODO/FIXME/BUG/HACK markers in comments. Default implementation uses content-based detection.

Source

fn query_patterns(&self) -> &[&str]

Return merged tree-sitter query patterns for this language.

Each pattern must use prefixed capture names (e.g. @pc_method) to avoid collisions across patterns. Override in each adapter.

Source

fn batch_captures<'a>(&self, file: &'a ParsedFile) -> Vec<Vec<QueryCapture<'a>>>

Run all query patterns in a single cursor traversal.

Default implementation calls collect_captures_multi with the patterns from query_patterns().

Source

fn compute_all(&self, file: &ParsedFile) -> AdapterCounts

Compute all adapter counts in a single batch pass.

This is the main entry point for StyleIr::from_parsed(). It calls batch_captures() once and passes the result to _from_batch helper methods, avoiding redundant traversals.

Source

fn extract_functions_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> Vec<FunctionNode>

Source

fn count_panic_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize

Source

fn count_naming_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize

Source

fn count_debug_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize

Source

fn count_excessive_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize

Source

fn count_unsafe_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize

Source

fn count_magic_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize

Source

fn count_goroutine_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize

Source

fn count_go_convention_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize

Source

fn count_python_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize

Source

fn count_java_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize

Source

fn count_ruby_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize

Source

fn count_c_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize

Source

fn count_ts_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize

Source

fn count_js_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize

Source

fn count_swift_from_batch<'a>( &self, file: &ParsedFile, _batch: &[Vec<QueryCapture<'a>>], ) -> usize

Implementors§