Advanced 6 terms

Developer Tools Engineering

LSP, DAP, tree-sitter grammar vocabulary, VS Code extension API concepts, static analysis (AST, lint rules), and developer experience tooling.

  • LSP (Language Server Protocol) /ɛl ɛs ˈpiː/

    A protocol that decouples IDE features (hover docs, go-to-definition, autocomplete, diagnostics) from specific editors. A language server implements the protocol; any LSP-compatible editor can use it. One server, many editors.

    "Before LSP, each IDE had to implement TypeScript support independently (VS Code, vim, IntelliJ — all separate implementations). Now TypeScript ships one language server. Any editor implementing the LSP client protocol gets the same go-to-definition, rename, and diagnostic capabilities. rust-analyzer, gopls, and pyright all use LSP."
  • DAP (Debug Adapter Protocol) /diː eɪ ˈpiː/

    A protocol (analogous to LSP) that standardises communication between a debugger UI (editor) and a debug backend. A debug adapter wraps a language runtime’s debugger and speaks DAP. Editors implementing the DAP client get a standard debugging UI for any language.

    "VS Code’s debug UI works with Python, Go, Rust, Node.js — all using DAP. The Python debugger (debugpy) implements the DAP server: it listens for launch/attach commands, sets breakpoints at the protocol level, sends stopped events, and returns variable values when the IDE inspects the stack frame."
  • Tree-sitter /triː ˈsɪtər/

    A parser generator and incremental parsing library producing concrete syntax trees for source code. Tree-sitter grammars define language syntax; the parser generates a tree that can be queried with s-expression patterns. Used for syntax highlighting, code navigation, and analysis in editors.

    "GitHub Copilot and Neovim use tree-sitter for context-aware code understanding. Tree-sitter’s incremental parsing re-parses only the changed portion of a file — for a 10,000-line file, editing one line triggers a partial re-parse in microseconds. S-expression queries let us find all function definitions: (function_declaration name: (identifier) @func.name)."
  • AST (Abstract Syntax Tree) /eɪ ɛs ˈtiː/

    A tree representation of source code’s syntactic structure without low-level details (parentheses, semicolons). Each node represents a language construct (function call, variable declaration, expression). Used for static analysis, code transformation, and linting.

    "Our custom ESLint rule traverses the AST: it visits CallExpression nodes where callee.name === ‘console.log’ and reports a lint error. The AST-based rule is language-aware — it won’t false-positive on the string ‘console.log’ in comments or in other contexts. AST traversal is the foundation of all non-trivial static analysis."
  • Cyclomatic Complexity /ˌsaɪkləˈmætɪk kəmˈpleksɪti/

    A software metric counting the number of linearly independent paths through a function. Calculated as: edges − nodes + 2 in the control flow graph, or: 1 + number of decision points (if, else, for, while, case, &&, ||). High cyclomatic complexity correlates with higher defect rates and harder testing.

    "Our code quality gate blocks merge if cyclomatic complexity exceeds 15 for any function. A function with 16 branches has 16 independent paths to test. The new billing calculation function hit 22 — we refactored it into 4 functions each under 8. The refactor also revealed 3 untested edge cases that became unit tests."
  • VS Code Extension Activation Event /vɪˈzuəl ˈstʊdɪəʊ kəˈd ɪkˈstɛnʃən ˌektɪˈveɪʃən ɪˈvɛnt/

    A condition in VS Code extension’s package.json that specifies when the extension should activate (load). Examples: onLanguage:python (activate when a Python file opens), onCommand:myext.doThing (activate when a command is invoked), workspaceContains:**/pyproject.toml.

    "Our extension activates on onLanguage:terraform to avoid loading for all VS Code users who never open .tf files. Before we added proper activation events, the extension loaded on startup for every user — adding 200ms to VS Code startup time. Lazy activation is critical for extension performance; over-broad activation events are a common review issue."