Skip to main content

LanguagePlugin

Trait LanguagePlugin 

Source
pub trait LanguagePlugin {
    // Required methods
    fn name(&self) -> &str;
    fn detect(&self, workspace: &Path, input: &PluginInput) -> bool;
    fn levels(&self) -> Vec<Level>;
    fn analyze(
        &self,
        workspace: &Path,
        level: &str,
        input: &PluginInput,
    ) -> Result<Graph>;

    // Provided methods
    fn is_test_path(&self, _rel_path: &str) -> bool { ... }
    fn versions(
        &self,
        _workspace: &Path,
        _input: &PluginInput,
    ) -> Vec<(String, String)> { ... }
    fn presets(
        &self,
        defaults: Vec<Preset>,
        _input: &PluginInput,
    ) -> Vec<Preset> { ... }
    fn thresholds(&self) -> BTreeMap<String, Thresholds> { ... }
}

Required Methods§

Source

fn name(&self) -> &str

Canonical name, e.g. "rust". Used by --plugin and recorded in the snapshot. Each plugin has exactly one name (js and ts are separate).

Source

fn detect(&self, workspace: &Path, input: &PluginInput) -> bool

Can this plugin parse workspace (honoring input)?

Source

fn levels(&self) -> Vec<Level>

Levels this plugin can produce, each carrying its edge-kind / attribute / node-kind / cycle-kind semantics.

Source

fn analyze( &self, workspace: &Path, level: &str, input: &PluginInput, ) -> Result<Graph>

Parse the workspace into a graph AT level (by name). Structure only: nodes (with their structural attributes) + edges. Metrics are added downstream. When input.ignore_tests is set, the plugin must drop its own test files here (it knows the language’s conventions; see is_test_path).

Provided Methods§

Source

fn is_test_path(&self, _rel_path: &str) -> bool

Does this workspace-relative path (forward-slashed, no leading ./) name a test file in this language? Used to drop tests during the walk when PluginInput::ignore_tests is set. Default: nothing is a test.

Source

fn versions( &self, _workspace: &Path, _input: &PluginInput, ) -> Vec<(String, String)>

Toolchain versions to record in the snapshot, e.g. [("rustc", "1.88.0")].

Source

fn presets(&self, defaults: Vec<Preset>, _input: &PluginInput) -> Vec<Preset>

Transform the orchestrator’s generic default presets for this language. Default: pass them through unchanged. A plugin may reword a prompt, change a sort_metric, drop a preset, or add language-specific ones.

Source

fn thresholds(&self) -> BTreeMap<String, Thresholds>

Language-calibrated per-metric thresholds (attribute key → tiers). The orchestrator overlays these onto the attribute specs. Default: none.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§