Skip to content

Latest commit

 

History

History
125 lines (89 loc) · 3.8 KB

CONTRIBUTING.md

File metadata and controls

125 lines (89 loc) · 3.8 KB

Contributing to sonar-web-frontend-reporters

Installation

  1. Clone repository
  2. Install dependencies
$ npm install

Running tests

Launch the npm test command. All tests and coding styles should pass if you want your contribution to be taken account.

Coding styles

This project uses ESLint to ensure code consistency. You can launch linting with the following command:

npm run lint

Building to ES5

Launch the npm run build command.

After writing your new reporter, you should build the library to keep the ES5 backward compatibility.

Writing a reporter

  1. First of all, create a file under reporters/ for your new reporter. It should match the following syntax: new-reporter.reporter.js.

  2. The new reporter must extends the Reporter class and implement defaultOptions and launch methods

  3. Add a new reporter type in the reporter.enum.js file

    const ReporterType = {
      NEWREPORTER: 'newreporter'
    }
  4. Register the reporter in the ReporterFactory

    switch (type) {
      case ReporterType.NEWREPORTER:
        opts = ReporterFactory.mergeOptions(options, NewReporter.defaultOptions());
        reporter = new NewReporter(opts, projectName);
        break;
    }
  5. Export the reporter so that anyone can use it (lib/api.js)

    module.exports = {
      NewReporter: require('./reporters/new-reporter.reporter'),
      ES5        : {
        NewReporter: require('../build/reporters/new-reporter.reporter')
      }
    };
  6. Create related tests in /test/reporters folder

  7. Update README

    • Default options section
    • Available reporters section

Commit Message Format

There are very precise rules over how our git commit messages can be formatted. This leads to more readable messages that are easy to follow when looking through the project history, but also allows us to generate the CHANGELOG.md.

Each commit message consists of a header, a body and a footer. The header has a special format that includes a type, a scope and a subject:

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

The header is mandatory and the scope of the header is optional.

Any line of the commit message should not be longer 100 characters, this allows the message to be easier to read on GitHub as well as in various git tools.

Type

Must be one of the following:

feat:     A new feature
fix:      A bug fix
docs:     Documentation only changes
style:    Changes that do not affect the meaning of the code
          (white-space, formatting, missing semi-colons, etc)
refactor: A code change that neither fixes a bug or adds a feature
perf:     A code change that improves performance
test:     Adding missing tests
chore:    Changes to the build process or auxiliary tools
          and libraries such as documentation generation

Scope

The scope could be anything specifying which part or aspect of the project changed. For example logging, npm, readme, release, shell, shrinkpack, shrinkwrap, tests, workflow, etc...

Subject

The subject contains succinct description of the change:

  • use the imperative, present tense: "change" not "changed" nor "changes"
  • don't capitalize first letter
  • no dot (.) at the end

Body

Just as in the subject, use the imperative, present tense: "change" not "changed" nor "changes".

The body should include the motivation for the change and contrast this with previous behavior.

Footer

The footer should contain any information about Breaking Changes and is also the place to reference GitHub issues that this commit Closes.

Breaking Changes should start with the word BREAKING CHANGE: with a space or two newlines. The rest of the commit message is then used for this.