scalps is evaluated with focused fixtures for extraction and scoring behavior plus a real-project ranking check from scalpel-editor. These checks are regression evidence, not a claim that the tool solves general natural-language code search.
The test suite covers definition identity, exact written ranges, namespaces, overloads, templates, inline header definitions, operator names, macro boundaries, compilation-database validation, complete index replacement, transaction rollback, candidate retrieval sources, every score contribution, sibling ranking, and deterministic ordering.
The compact scalpel-editor ranking fixture contains 28 copied definition records representing the three target definitions and their main competitors. It requires:
Editor::SetWrapModeranks first forset line wrap mode.Editor::SearchInTargetranks in the top three forfind text in target.ScintillaBase::AutoCShowranks in the top five forshow an autocomplete list.
The fixture includes attached documentation and competitors such as SetMarginSensitiveN, GetWrapMode, SetPrintWrapMode, Document::FindText, AutoComplete::Show, and AutoComplete constructors. It keeps the ranking defect reproducible without requiring a separate scalpel-editor checkout during ordinary tests.
Run all automated checks with:
ctest --test-dir build --output-on-failureThe full evaluation project contains 111 accepted compilation commands. With schema version 7, extractor version 5, and ranking configuration version 4, indexing produced:
- 111 successful translation units and no failed translation units.
- 4,434 merged definitions.
- No skipped eligible project definitions.
- No merge conflicts.
- 346 unique fully macro-generated exclusions, primarily Catch test definitions.
The motivating query results in that full index were:
| Query | Expected definition | Rank |
|---|---|---|
set line wrap mode |
Editor::SetWrapMode |
1 |
find text in target |
Editor::SearchInTarget |
1 |
show an autocomplete list |
ScintillaBase::AutoCShow |
1 |
These ranks are tied to the recorded extractor and ranking versions. A future scoring or extraction change should rerun the full index and update this document only after the corresponding fixture and focused tests pass.
When a useful query ranks poorly, rerun it with --verbose and record the query, expected qualified definition, actual rank, index versions, and score explanations for the leading candidates. Inspect whether the failure comes from candidate generation, identifier analysis, operation classification, structural scoring, lexical field balance, or tie-breaking before changing weights.
Prefer structural corrections that improve a class of searches over special vocabulary. Add a narrow normalization rule only when the structural and field weighting are sound and a concrete naming convention still prevents the intended match. Avoid modifying the searched project's source or comments merely to influence the benchmark.
Capture a compact fixture containing the intended definition and the competitors that demonstrate the imbalance. Require a useful rank bound rather than an unnecessarily exact order for unrelated candidates, and keep the existing sibling and deterministic-order tests passing.