Grep one-liners as CI tasks

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • configs

    Discontinued Deprecated - Currently being moved into the plugins repo (by trunk-io)

  • Tests are a good way to assert an invariant that you expect of your codebase, but as with all things, resolving the error can get a bit tricky/frustrating.

    The canonical example in my mind is any kind of autofix-able linter, where there's some kind of patch (or more nuanced autofix) that the linter can generate on-the-spot for you. With a sh_test construct (or any other unit test), you generally find yourself printing out some command that the user can run to fix things, which in a sufficiently large codebase can get really frustrating.

    (My company - https://trunk.io - is actually building a universal linter as part of our product offering, and we already have a system to write custom linters with varying levels of sophistication that can plug into both your IDE and CI system.)

  • semgrep

    Lightweight static analysis for many languages. Find bug variants with patterns that look like source code.

  • The semgrep[1] tool seems like the logical next step, for when you've outgrown plain ol' grep.

    [1] https://semgrep.dev/

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • Anki-Android

    AnkiDroid: Anki flashcards on Android. Your secret trick to achieve superhuman information retention.

  • Android's default linting already contains a "missing translation" lint rule which you can activate: "MissingTranslation"[0]

    For Android specifically: Gradle and Android Studio both support a powerful linting framework (to the level that it can provide auto-fixes to the IDE). It's better to provide an in-editor to guide your contributors before it hits CI, (but obviously also run lint in CI as a backup):

    Some examples of custom lint rules[1] and the default rules which Android Studio runs[2]:

    [0] https://android.googlesource.com/platform/tools/base/+/32923...

    [1] https://github.com/ankidroid/Anki-Android/tree/develop/lint-...

    [2] https://github.com/ankidroid/Anki-Android/blob/master/lint-r...

  • jq

    Discontinued Command-line JSON processor [Moved to: https://github.com/jqlang/jq] (by stedolan)

  • In today's world of excellent CLI tools I don't think grep is a good choice, especially for checking irregular languages like XML. [0]

    I use tools like `jq` [1] or `yq` [2] all the time for CI checks. One useful check, is we have a configuration file stored as several hundred lines of YAML. Its a nice thing to maintain a sorted order for that, so we have a git pre-commit hook that runs the following:

    > yq eval --inplace '.my_key|= sort' my_file.yaml

    Of course, a pre-commit hook or CI both work. There's pros and cons of both. For our team, the pre-commit hook is a low enough level of effort, and doesn't require a CI check for something that executes in milliseconds.

    [0] https://stackoverflow.com/a/1732454

    [1] https://github.com/stedolan/jq

    [2] https://github.com/mikefarah/yq

  • yq

    yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor

  • In today's world of excellent CLI tools I don't think grep is a good choice, especially for checking irregular languages like XML. [0]

    I use tools like `jq` [1] or `yq` [2] all the time for CI checks. One useful check, is we have a configuration file stored as several hundred lines of YAML. Its a nice thing to maintain a sorted order for that, so we have a git pre-commit hook that runs the following:

    > yq eval --inplace '.my_key|= sort' my_file.yaml

    Of course, a pre-commit hook or CI both work. There's pros and cons of both. For our team, the pre-commit hook is a low enough level of effort, and doesn't require a CI check for something that executes in milliseconds.

    [0] https://stackoverflow.com/a/1732454

    [1] https://github.com/stedolan/jq

    [2] https://github.com/mikefarah/yq

  • ClickHouse

    ClickHouse® is a free analytics DBMS for big data

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts