JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 4
  • Score
    100M100P100Q41149F
  • License Sustainable Use License

Supercharged multiline code search and replace tool

Package Exports

  • @codeque/cli
  • @codeque/cli/dist/cli.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@codeque/cli) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

CodeQue

Supercharged structural code search and replace tool


Overview πŸ“£

CodeQue is structural code search tool for TypeScript and JavaScript projects.

CodeQue can be used to search for any code, from simple symbol search to complex multiline patterns.

It reduces struggle by providing accurate results regardless the formatting noise.

It makes it easy to get familiar with codebase and helps make better decisions as a result.

You can also use it as a linter.

Find out more about the project on codeque.co

Try CodeQue Visual Studio Code Extension

Installation πŸ‘‡

yarn global add @codeque/cli

Usage πŸ•΅οΈ

Run codeque to start CLI query editor.

codeque

Type query and hit ctrl+s to run your first search!

codeque cli demo

CodeQue CLI features:

  • four search modes
  • search by file dependency
  • search by files changed since last commit
  • clickable file links with code position (CMD + pointer click)
  • case insensitive search
  • API to use codeque as restricted code pattern guard

Find out how to use wildcards and discover search modes in codeque docs!

Use cases πŸ§‘β€πŸ’»

In first place it's code search, so you can use it to search any code (as long as it is TypeScript or JavaScript - more languages in future).

Here are some use cases where CodeQue shines ✨

Search duplicated code 🍣

Once you spot some code pattern in more than one place, you can just copy and search for it.

You will find all occurrences and you will be bale to get rid of repetition forever!

Search API usage 🧰

I love using CodeQue to look for specific function or React hook usage. It's faster than looking for API into docs.

This a typical query that you can use to find usage of some React hook.

const $$$ = useMyHook();

Assertions β˜”

You can use CLI to ensure that some bad code patterns will not be introduced into the codebase.

It's not that handy as ESLint (an CodeQue ESLint plugin is commit soon!), but at least you will not waste time for implementing custom plugins!

Use this to ensure there are no skipped tests in the codebase:

codeque --query "$$.skip()" "$$.only()" --invertExitCode

Flag --invertExitCode will revert default behavior of exit codes, and return non zero exit code when matches would be found.

Git hooks πŸͺ

I use codeque with text mode for my pre-commit hook.

text mode is faster than other modes, because it's regexp based.

I want to ensure there will be no console.logs, todos, and skipped tests introduced in my commit.

.git/hooks/pre-commit content

#!/bin/sh

codeque --git --query '$$.only(' '$$.skip(' 'console.log(' '// todo' --mode text --invertExitCode --caseInsensitive

if [ $? -ge 1 ] ; then
  echo 'πŸ›‘ Found restricted code. Terminating.'
  exit 1
fi

CLI reference πŸ“–

Root command codeque

Opens interactive terminal editor to type query and performs structural code search in current working directory. Alternatively performs search based on query provided as an param or query file.

Usage

codeque [options]

Options

  • -m, --mode [mode] - Search mode: exact, include, include-with-order, text (optional)
  • -r, --root [root] - Root directory for search (default: process.cwd()) (optional)
  • -e, --entry [entry] - Entry point to determine search files list based on it's imports (excluding nodeˍmodules) (optional)
  • -i, --caseInsensitive - Perform search with case insensitive mode (optional)
  • -l, --limit [limit] - Limit of results count to display (optional)
  • -q, --query [query...] - Inline search query(s) (optional)
  • -qp, --queryPath [queryPath...] - Path to file(s) with search query(s) (optional)
  • -g, --git - Search in files changed since last git commit (optional)
  • -iec, --invertExitCode - Return non-zero exit code if matches are found. Useful for creating assertions (optional)
  • -v, --version - Print CLI version (optional)
  • -pfl, --printFilesList - Print list of searched files (optional)
  • -ogi, --omitGitIgnore - Search files regardless .gitignore settings (optional)
  • -ae, --allExtensions - Search in all file extensions. Useful for text search mode. (optional)