Skip to content

Commit 3314fb5

Browse files
committed
chore: add sample rules
1 parent 57a2206 commit 3314fb5

File tree

1 file changed

+93
-0
lines changed
  • samples/code-expert/documentation

1 file changed

+93
-0
lines changed

samples/code-expert/documentation/rules.md

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,17 @@ The same hierarchy applies for exclude patterns.
159159
"defaultExcludePatterns": [
160160
"**/test/**"
161161
]
162+
},
163+
{
164+
"name": "python",
165+
"defaultPatterns": [
166+
"**/*.py"
167+
],
168+
"defaultExcludePatterns": [
169+
"**/test/**",
170+
"**/venv/**",
171+
"**/__pycache__/**"
172+
]
162173
}
163174
],
164175
"categories": [
@@ -185,6 +196,18 @@ The same hierarchy applies for exclude patterns.
185196
"defaultPatterns": [
186197
"**/*.java"
187198
]
199+
},
200+
{
201+
"name": "HexagonalArchitecture",
202+
"languages": [
203+
"python"
204+
],
205+
"exists": [
206+
"**/domain/**/*.py"
207+
],
208+
"defaultPatterns": [
209+
"**/*.py"
210+
]
188211
}
189212
],
190213
"rules": [
@@ -205,6 +228,76 @@ The same hierarchy applies for exclude patterns.
205228
"contextPatterns": [
206229
"**/pom.xml"
207230
]
231+
},
232+
{
233+
"rule": "HEX001",
234+
"ruleDesc": "Domain entities should not have dependencies on external frameworks or libraries",
235+
"category": "HexagonalArchitecture",
236+
"language": "python",
237+
"patterns": [
238+
"**/domain/model/**/*.py"
239+
]
240+
},
241+
{
242+
"rule": "HEX002",
243+
"ruleDesc": "Port interfaces (protocols) should be defined using abstract base classes or Protocol classes",
244+
"category": "HexagonalArchitecture",
245+
"language": "python",
246+
"patterns": [
247+
"**/domain/ports/**/*.py"
248+
]
249+
},
250+
{
251+
"rule": "HEX003",
252+
"ruleDesc": "Adapters should implement exactly one port interface",
253+
"category": "HexagonalArchitecture",
254+
"language": "python",
255+
"patterns": [
256+
"**/adapters/**/*.py"
257+
],
258+
"contextPatterns": [
259+
"**/domain/ports/**/*.py"
260+
]
261+
},
262+
{
263+
"rule": "HEX004",
264+
"ruleDesc": "Domain services should only depend on domain entities and port interfaces",
265+
"category": "HexagonalArchitecture",
266+
"language": "python",
267+
"patterns": [
268+
"**/domain/services/**/*.py"
269+
],
270+
"contextPatterns": [
271+
"**/domain/model/**/*.py",
272+
"**/domain/ports/**/*.py"
273+
]
274+
},
275+
{
276+
"rule": "HEX005",
277+
"ruleDesc": "Application services should not bypass ports by directly using adapters",
278+
"category": "HexagonalArchitecture",
279+
"language": "python",
280+
"patterns": [
281+
"**/application/**/*.py"
282+
]
283+
},
284+
{
285+
"rule": "HEX006",
286+
"ruleDesc": "Domain entities should use value objects for primitive obsession prevention",
287+
"category": "HexagonalArchitecture",
288+
"language": "python",
289+
"patterns": [
290+
"**/domain/model/**/*.py"
291+
]
292+
},
293+
{
294+
"rule": "HEX007",
295+
"ruleDesc": "Adapters should not expose their implementation details to the domain",
296+
"category": "HexagonalArchitecture",
297+
"language": "python",
298+
"patterns": [
299+
"**/adapters/**/*.py"
300+
]
208301
}
209302
]
210303
}

0 commit comments

Comments
 (0)