Skip to content
This repository was archived by the owner on Jun 30, 2025. It is now read-only.

defi-wonderland/natspec-smells

Repository files navigation

Deprecation notice

⚠️ DEPRECATED – DO NOT USE

This repository is no longer maintained and is deprecated.

It may contain outdated, insecure, or vulnerable code and should not be used in production or as a dependency in any project.

The repository is retained solely for historical reference. No support, updates, or security patches will be provided.

Natspec Smells has had a fruitful life, and its legacy lives on lintspec, a rust re-implementation which we recommend using in the future.

Version License: MIT

Natspec Smells

Just like code, documentation can smell too. Natspec Smells aims to help automatically identify missing or incomplete natspec.

What can it do?

  • Verifies natspec for: constructors, variables, functions, structs, errors, events, modifiers
  • Finds misspelled or missing @param or @return's.
  • Lets you enforce the need for @inheritdoc in public/external functions.
  • Can integrate on your daily workflow, or just as a final check.

No setup usage

Want to quickly check if your natspec smells?

Just run:

npx @defi-wonderland/natspec-smells --include "src/**/*.sol"

Note

Remember to put quotes around the glob strings when using the include and exclude options.

Recommended setup

  1. Install the package:

    yarn add --dev @defi-wonderland/natspec-smells
  2. Create a config file named natspec-smells.config.js, you can use the following as an example:

    /**
     * List of supported options: https://github.com/defi-wonderland/natspec-smells?tab=readme-ov-file#options
     */
    
    /** @type {import('@defi-wonderland/natspec-smells').Config} */
    module.exports = {
      include: 'src/**/*.sol',
      exclude: '(test|scripts)/**/*.sol',
    };
  3. Run

    yarn natspec-smells

Verify your natspec in CI

With the setup defined above, it's possible to invoke the executable from within a github workflow, as long as node.js is available in that environment:

    steps:
      - uses: actions/checkout@v3

      - name: Use Node.js
        uses: actions/setup-node@v3

      - name: Check natspec
        run: yarn natspec-smells

Options

Option Description Required Default
include Glob pattern of files to process. Yes
exclude Glob pattern of files to exclude. No ""
root Project root directory. No ./
enforceInheritdoc True if all external and public functions should have @inheritdoc. No true
constructorNatspec True if the constructor should have natspec. No false

Contributors

Natspec Smells was built with ❤️ by Wonderland.

Wonderland the largest core development group in web3. Our commitment is to a financial future that's open, decentralized, and accessible to all.

DeFi sucks, but Wonderland is here to make it better.

About

👃Automatically identify missing or incomplete natspec

Topics

Resources

License

Stars

Watchers

Forks

Contributors 6