Discussion

Ask HN: Let's build Checkstyle for Bash?

After working with Bash and Shellcheck for a few months, I noticed I could improve my code quality by making it compliant with the Shell Style Guide by Google [0]. While working on that, I thought some aspects of this Shell style guide can be verified automatically, granted some assumptions/opinions are formed. So I looked around for linting tools and autoformatters for Bash:

Shellcheck: https://github.com/koalaman/shellcheck

From Asynchronous Lint Engine (ALE): https://github.com/dense-analysis/ale/blob/master/supported-...

- bashate: https://github.com/openstack/bashate

- cspell: https://github.com/streetsidesoftware/cspell/tree/main/packa...

- Bash Language Server: https://github.com/bash-lsp/bash-language-server

- shell -n flag: https://www.gnu.org/software/bash/manual/bash.html#index-set

- sh(shfmt): https://github.com/mvdan/sh

- shdoc: https://github.com/reconquest/shdoc

From this stack post [1]:

- checkbashisms: http://man.he.net/man1/checkbashisms

- shlint: https://github.com/duggan/shlint (archived)

Prettier: https://marketplace.visualstudio.com/items?itemName=esbenp.p...

Within all these linters and auto-formatters I did not find checks that enforce, for example, the Function Comments of the Shell Style Guide by Google:

All function comments should describe the intended API behaviour using:

    Description of the function.
    Globals: List of global variables used and modified.
    Arguments: Arguments taken.
    Outputs: Output to STDOUT or STDERR.
    Returns: Returned values other than the default exit status of the last command run.
Hence, I thought we could make a Bash linting tool that verifies compliance with the Shell Style Guide by Google. To do so, a brief start was made here [2]. It identifies/lists elements in that style guide that may be verified automatically. Since Bash has been around longer than me, I think there may be some people better suited for the development of this enhanced linter. Hence, I thought it might be wise, for impact and usability, to share this idea here.

What do you say, HN?

[0]: https://google.github.io/styleguide/shellguide.html

[1]: https://stackoverflow.com/questions/3668665/is-there-a-stati...

[2]: https://github.com/TruCol/checkstyle-for-bash

59 points a-t-0 4 years ago 69 comments

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton