hadolint VS ShellCheck

Compare hadolint vs ShellCheck and see what are their differences.

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
hadolint ShellCheck
24 488
9,707 34,934
1.8% -
2.3 8.6
about 20 hours ago 11 days ago
Haskell Haskell
GNU General Public License v3.0 only GNU General Public License v3.0 only
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

hadolint

Posts with mentions or reviews of hadolint. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-02.
  • Dockerfile Linter
    1 project | news.ycombinator.com | 3 Mar 2024
  • Writing a Minecraft server from scratch in Bash (2022)
    5 projects | news.ycombinator.com | 2 Mar 2024
    To skip the "move your scripts to standalone files" step some devs don't like, consider something like https://github.com/hadolint/hadolint which runs Shellcheck over inline scripts within Containerfiles.
  • I reduced the size of my Docker image by 40% – Dockerizing shell scripts
    4 projects | news.ycombinator.com | 3 Feb 2024
    This is neat :)

    I love going and making containers smaller and faster to build.

    I don't know if it's useful for alpine, but adding a --mount=type=cache argument to the RUN command that `apk add`s might shave a few seconds off rebuilds. Probably not worth it, in your case, unless you're invalidating the cached layer often (adding or removing deps, intentionally building without layer caching to ensure you have the latest packages).

    Hadolint is another tool worth checking out if you like spending time messing with Dockerfiles: https://github.com/hadolint/hadolint

  • Top 10 common Dockerfile linting issues
    1 project | dev.to | 15 Sep 2023
    With Depot, we make use of two Dockerfile linters, hadolint and a set of Dockerfile linter rules that Semgrep has written to make a bit of a smarter Dockerfile linter.
  • hadolint - Dockerfile linter
    1 project | dev.to | 16 Aug 2023
    # Download hadolint wget https://github.com/hadolint/hadolint/releases/download/v2.12.0/hadolint-Linux-x86_64 # Download SHA256 checksum wget https://github.com/hadolint/hadolint/releases/download/v2.12.0/hadolint-Linux-x86_64.sha256 # Validate the checksum sha256sum -c hadolint-Linux-x86_64.sha256 # Make the file executable chmod + ./hadolint-Linux-x86_64 # Rename the file mv hadolint-Linux-x86_64 hadolint
  • Haskell Dockerfile Linter
    1 project | news.ycombinator.com | 20 Apr 2023
  • Is adding a USER best practice?
    1 project | /r/docker | 21 Mar 2023
    The most common linter I've seen and used it Hadolint, which does: https://github.com/hadolint/hadolint/wiki/DL3002 I didn't bother checking to see if alternatives also support this as well though.
  • Checkmake: Experimental Linter/Analyzer for Makefiles
    6 projects | news.ycombinator.com | 14 Aug 2022
    Some discussion on that here:

    https://github.com/koalaman/shellcheck/issues/58

    The hadolint project does shell checking for Dockerfiles and it uses shellcheck:

    https://github.com/hadolint/hadolint

    So the approach is definitely feasible, but you do need a new project and probably it needs to be written in Haskell.

  • Dokter: the doctor for your Dockerfiles
    2 projects | /r/Python | 12 Aug 2022
    how does this compare to something like hadolint?
    5 projects | /r/docker | 12 Aug 2022
    Also, have you run across Hadolint for linting? https://github.com/hadolint/hadolint

ShellCheck

Posts with mentions or reviews of ShellCheck. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-19.
  • Ask HN: Is there a GUI for bash shell?
    2 projects | news.ycombinator.com | 19 Apr 2024
    ncurse, dialog, zenity[2]. i/o buffering may be an issue [3a,3b]

    Assuming using same account, use history command to show past commands[0a, 0b]

    'load random example' on shellcheck using own custom examples from history command.[1]

    --------

    [3a] : http://www.gnu.org/software/coreutils/manual/html_node/stdbu...

    [3b] : http://unix.stackexchange.com/questions/25372/how-to-turn-of...

    [2] : http//funprojects.blog/2021/01/25/zenity-command-line-dialogs/

    [1] : http://www.shellcheck.net/

    [0a] : http://www.tecmint.com/history-command-examples/

    [0b] : http://www.tecmint.com/remember-linux-commands/

    web based documentation: https://www.tecmint.com/linux-commands-cheat-sheet/

    commands grouped by typical usage patterns : https://www.tecmint.com/essential-linux-commands/

  • DevSecOps with AWS- IaC at scale - Building your own platform - Part 1
    8 projects | dev.to | 21 Mar 2024
    ... #************************** Terraform ************************************* ARG TERRAFORM_VERSION=1.7.3 RUN set -ex \ && curl -O https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip && unzip terraform_${TERRAFORM_VERSION}_linux_amd64.zip -d /usr/local/bin/ RUN set -ex \ && mkdir -p $HOME/.terraform.d/plugin-cache && echo 'plugin_cache_dir = "$HOME/.terraform.d/plugin-cache"' > ~/.terraformrc #************************* Terragrunt ************************************* ARG TERRAGRUNT_VERSION=0.55.1 RUN set -ex \ && wget https://github.com/gruntwork-io/terragrunt/releases/download/v${TERRAGRUNT_VERSION}/terragrunt_linux_amd64 -q \ && mv terragrunt_linux_amd64 /usr/local/bin/terragrunt \ && chmod +x /usr/local/bin/terragrunt #*********************** Terramate **************************************** ARG TERRAMATE_VERSION=0.4.5 RUN set -ex \ && wget https://github.com/mineiros-io/terramate/releases/download/v${TERRAMATE_VERSION}/terramate_${TERRAMATE_VERSION}_linux_x86_64.tar.gz \ && tar -xzf terramate_${TERRAMATE_VERSION}_linux_x86_64.tar.gz \ && mv terramate /usr/local/bin/terramate \ && chmod +x /usr/local/bin/terramate #*********************** tfsec ******************************************** ARG TFSEC_VERSION=1.28.5 RUN set -ex \ && wget https://github.com/aquasecurity/tfsec/releases/download/v${TFSEC_VERSION}/tfsec-linux-amd64 \ && mv tfsec-linux-amd64 /usr/local/bin/tfsec \ && chmod +x /usr/local/bin/tfsec \ && terragrunt --version #**********************Terraform docs ************************************ ARG TERRRAFORM_DOCS_VERSION=0.17.0 RUN set -ex \ && curl -sSLo ./terraform-docs.tar.gz https://terraform-docs.io/dl/v${TERRRAFORM_DOCS_VERSION}/terraform-docs-v${TERRRAFORM_DOCS_VERSION}-$(uname)-amd64.tar.gz \ && tar -xzf terraform-docs.tar.gz \ && chmod +x terraform-docs \ && mv terraform-docs /usr/local/bin/terraform-docs #********************* ShellCheck ***************************************** ARG SHELLCHECK_VERSION="stable" RUN set -ex \ && wget -qO- "https://github.com/koalaman/shellcheck/releases/download/${SHELLCHECK_VERSION?}/shellcheck-${SHELLCHECK_VERSION?}.linux.x86_64.tar.xz" | tar -xJv \ && cp "shellcheck-${SHELLCHECK_VERSION}/shellcheck" /usr/bin/ \ && shellcheck --version ...
  • Ask HN: Popular open source tool originally written in Haskell?
    3 projects | news.ycombinator.com | 10 Feb 2024
    ShellCheck: https://github.com/koalaman/shellcheck
  • Google ZX – A tool for writing better scripts
    8 projects | news.ycombinator.com | 9 Feb 2024
    If I want to write better shell scripts I usually run shellcheck and adjust accordingly or if I need facilities not provided by the shell i switch to a full fledged programming language. Ans oh yes, `sh` is present almost on every BSD and Linux box for free so I consider it an important thing to at least be comfortable with.

    shellcheck: https://www.shellcheck.net/

  • How I use Nix in my Elm projects
    8 projects | dev.to | 19 Dec 2023
    When I run nix-shell at the root of the project it puts me in a Nix shell that contains, among other programs, caddy and shellcheck. Notice that in the shellHook I add the project's shell scripts to the PATH. So once I'm in the Nix shell I can, among other things:
  • Ask HN: A Bash guide for Posix programmers?
    1 project | news.ycombinator.com | 17 Dec 2023
  • Regex support to list modules in .cabal?
    1 project | /r/haskell | 4 Dec 2023
    I have also seen some projects on github like ShellCheck which first make a library, expose all the modules and then simple add that do build-depends of the final executable. Is this the recommended approach than having just one executable and adding all the modules to other-modules:?
  • Shellcheck finds bugs in your shell scripts
    11 projects | news.ycombinator.com | 23 Nov 2023
    The error checks can be pretty arcane:

       https://github.com/koalaman/shellcheck/wiki/Checks
  • Is there a syntax checker?
    2 projects | /r/groff | 24 Oct 2023
    Similar to for instance shellcheck to check the syntax of shell scripts, is there an equivalent for the set of roff commands typically used in a (Linux) man page? I'm aware that e.g. pandoc permits the conversion of an other format (e.g., org) to both roff man and roff ms.
  • Shellcheck – finds bugs in your shell scripts
    1 project | news.ycombinator.com | 6 Oct 2023

What are some alternatives?

When comparing hadolint and ShellCheck you can also consider the following projects:

trivy - Find vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more

bash-language-server - A language server for Bash

dockle - Container Image Linter for Security, Helping build the Best-Practice Docker Image, Easy to start

shfmt - Dockernized shfmt. This formats shell script.

docker-bench-security - The Docker Bench for Security is a script that checks for dozens of common best-practices around deploying Docker containers in production.

shellharden - The corrective bash syntax highlighter

stan - 🕵️ Haskell STatic ANalyser

shfmt - A shell formatter (sh/bash/mksh)

hlint - Haskell source code suggestions

PowerShell - PowerShell for every system!

grype - A vulnerability scanner for container images and filesystems

efm-langserver - General purpose Language Server