CrystallineButterfly / natspec-smells

Automatically identify missing or incomplete natspec

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 solidity --exclude solidity/(test|scripts)/**/*.sol

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: "solidity",
      exclude: ["solidity/(test|scripts)/**/*.sol"],
    };
  3. Run

    yarn natspec-smells

Verify your natspec in CI

Soon to come.

Options

Option Description Required Default
include Glob pattern of files to process. Yes
exclude Glob patterns 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

License:MIT License


Languages

Language:TypeScript 78.3%Language:Solidity 17.1%Language:JavaScript 4.3%Language:Shell 0.3%