Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added project architecture sniffer docs #3014

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions _data/sidebars/dg_dev_sidebar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1053,6 +1053,8 @@ entries:
nested:
- title: Architecture Sniffer
url: /docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html
- title: Project Architecture Sniffer
url: /docs/dg/dev/sdks/sdk/development-tools/project-architecture-sniffer.html
- title: Code Sniffer
url: /docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html
- title: Performance audit tool- Benchmark
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
title: Project Architecture Sniffer
last_updated: Jan 7, 2024
---
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add description and template


The [Project Architecture Sniffer](https://github.com/spryker/project-architecture-sniffer) is a powerful tool designed specifically for Spryker projects, leveraging the capabilities of the [PHP Mess Detector](https://phpmd.org) to maintain and enforce architectural standards.

The tool includes:

* Adapted PHPMD rules tailored to the needs of Spryker projects.
* [Architecture Sniffer](https://github.com/spryker/architecture-sniffer) rules for enforcing core-specific conventions.
* Newly designed rules created specifically to address challenges unique to Spryker projects.

We recommend using this tool to ensure that your project's architecture aligns with Spryker's best practices and guidelines.

## Priority Levels
- `1`: Сritical
- `2`: Major
- `3`: Medium

We recommend minimum priority `3` by default for local and CI checks.

## Usage

Make sure you include the sniffer as `require-dev` dependency:
```
composer require --dev spryker/project-architecture-sniffer
```

### Running

Find [command line option](https://phpmd.org/documentation/index.html).

You can run the Project Architecture Sniffer from CLI by using:
```
vendor/bin/phpmd src/Pyz/ text vendor/spryker/project-architecture-sniffer/src/ruleset.xml --minimumpriority 3
```

### Baseline

Existing projects and demo-shops may contain rule violations.
The decision to refactor existing violations may be at the discretion of each project individually.
It is recommended to approach this in a differentiated manner.
To integrate rules into the project immediately, there recommended to generate a [baseline](https://phpmd.org/documentation/#baseline) and move forward.
vitaliiivanovspryker marked this conversation as resolved.
Show resolved Hide resolved
It is also permissible to [suppress rules](https://phpmd.org/documentation/suppress-warnings.html) on a case-by-case basis.
vitaliiivanovspryker marked this conversation as resolved.
Show resolved Hide resolved

{% info_block infoBox %}

Spryker demo shops may contain violations when analyzed with the Architecture Sniffer, as the tool includes more specific rules by default.
vitaliiivanovspryker marked this conversation as resolved.
Show resolved Hide resolved
It is recommended to generate a baseline during the initialization phase of your project development.
This allows you to focus on addressing violations related to project-level integrations.

{% endinfo_block %}
Loading