debtlint 0.1.0

A technical debt detection tool
# Getting Started

> [PoC Innovation's Open-Source project template]https://github.com/PoCInnovation/open-source-project-template

Please read carefully this guide.

## Setup

In this part, you will configure your project.

### Branches

Branch protection is really important. It helps you to have control on your code.

For each of the following branches, add the required protections.

#### `main`

```markdown
- [x] Require a pull request before merging
  - [x] Require approvals
        Required number of approvals before merging: 1

- [x] Require status checks to pass before merging
  - [x] Require branches to be up to date before merging

- [x] Require conversation resolution before merging
```

### Documents

This template provides the must-have documents.

#### README.md

The README.md is the showcase of your project. It always must be clean and consistent. Otherwise, no one will care of your project.

Fill every sections of the [README.md](/README.md).
> If you add pictures, put them in the [assets](./assets/) folder.

#### CONTRIBUTING.md

The CONTRIBUTING.md is the guide to contribute to your project. It always must be clean and consistent. Otherwise, no one will contribute to your project.

Fill every sections of the [CONTRIBUTING.md](/CONTRIBUTING.md).

#### LICENSE

The LICENSE protects your code and contributors.

This template provides an [Apache Licence 2.0](https://www.apache.org/licenses/LICENSE-2.0).
> If you want another one, check this [guide](https://choosealicense.com).

If your project doesn't belong to [PoC Innovation](https://github.com/PoCInnovation), make sure to update the copyrights of the [LICENCE](/LICENSE).

### About

Update the `About` section by adding a description, a website, and topics.

### Templates

This template provides the must-have templates.

#### Issues

An issue is a tool to track and focus tasks.

This template provides two issues templates :
- `Bug Report`
- `Feature Request`

Change the default assignee of the [bug_report](./ISSUE_TEMPLATE/bug_report.yml) template.

Change the default assignee of the [feature_request](./ISSUE_TEMPLATE/feature_request.yml) template.

#### Pull Requests

A pull request is an event where a contributor asks a maintainer to review code.

This template provides a [pull request template](./pull_request_template.md). You don't need to update it.

#### Milestones

A milestone helps to track progress on groups of issues or pull requests.

This template provides a [milestone template](./milestone_template.md). You don't need to update it.

### Labels

A label helps to categorize issues and pull requests.

Make sure to have the following labels :

- `bug`: Something isn't working
- `bugfix`: Resolve a bug
- `chore`: Global maintenance
- `documentation`: Improvements or additions to documentation
- `duplicate`: This issue or pull request already exists
- `enhancement`: New feature or request
- `help wanted`: Extra attention is needed
- `invalid`: This doesn't seem right
- `major`: Major update (for release)
- `minor`: Minor update (for release)
- `patch`: Patch update (for release)
- `question`: Further information is requested
- `triage`: Need to be tagged
- `wontfix`: This will not be worked on

### GitHub project

Create a GitHub project to manage your milestones, issues and pull requests.

### Actions

This template provides some GitHub actions.

#### Release Drafter

A release is tool with changelogs that present a full history of a project.

This template provides an [action](./workflows/release-drafter.yml) that drafts [next releases notes](./release-drafter.yml) as pull requests are merged into the main branch. You don't need to update it.
> Check this [action's documentation](https://github.com/release-drafter/release-drafter) to understand how it works

### Settings

#### Visibility

Make your repository public.

## Sprints

In this part, you will learn how to manage sprints.

A sprint is associated as a milestone.\
A task is associated as an issue.

### Workflow

The workflow to follow is:

1) Create a milestone
2) Create all the needed issues linked to this milestone
3) Manage the pull requests linked with these issues using the GitHib project
4) Resolve these issues
5) Publish a release
6) Close the milestone

### Milestones

Each milestones must use the [milestone template](./milestone_template.md).

There are two parts :
- Overall
  > **⚠️ It's checklist must be completed before starting this sprint ⚠️**
- Final Report
  > **⚠️ It's checklist must be completed before starting a new sprint ⚠️**

Additional information is written in the milestones's checklists. Read them carefully!

### Issues

Create all the required issues of a sprint before starting it. Once the sprint started, no issue linked to it should be create.

**Each issue must be linked to a milestone and a GitHub project, have the right labels and be assigned to someone.**

You can discuss in a issue, do it as much as you can!

### Pull Requests

**Each pull request must be linked to an issue and a GitHub project, have the right labels, be assigned to someone and have a reviewer.**

You can discuss in a pull request, do it as much as you can!

### GitHub project

**No tasks (issue) must be created directly from the GitHub project. Create an issue using a template, it will automatically appears on the GitHub project. Don't forget to archive the tasks once the milestone is closed.**

It is a powerful tool, use it well!

### Releases

**Each update on the main branch must be linked to a release.**

Tag pull requests with the `patch`, `minor` or `major` labels.

## Notes

### Discord Webhook

We strongly advice you to have a discord channel on which you will receive GitHub updates on your project.

Follow this [tutorial](https://gist.github.com/SGTGunner/50d6a3cc0d489cf779f77695ba3e22ea).

### Security dependabot

We strongly advice you to have a security dependabot to fix vulnerable dependencies.

Follow this [tutorial](https://docs.github.com/en/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates#managing-dependabot-security-updates-for-your-repositories).

### Help

If you have any questions, please contact [Reza Rahemtola](https://github.com/RezaRahemtola).

> Made with ❤️ by PoC