openai/openai-guardrails-python
Duplication Places in code with 6 or more lines that are exactly the same. |
Duplication Overall
- 12% duplication:
- 10,097 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
- 1,283 duplicated lines
- 154 duplicates
Duplication per Extension
Duplication per Component (primary)
Longest Duplicates
The list of 50 longest duplicates.
| Size | # | Folders | Files | Lines | Code |
|---|---|---|---|---|---|
| 75 | x 2 | src/guardrailssrc/guardrails | 211:315 (14%)555:657 (14%) | view | |
| 29 | x 2 | src/guardrailssrc/guardrails | 449:483 (5%)795:829 (5%) | view | |
| 27 | x 2 | src/guardrailssrc/guardrails | 406:448 (5%)748:789 (5%) | view | |
| 25 | x 2 | src/guardrails/resources/chatsrc/guardrails/resources/responses | 104:131 (22%)87:114 (9%) | view | |
| 20 | x 2 | src/guardrailssrc/guardrails | 180:208 (3%)351:379 (3%) | view | |
| 18 | x 2 | src/guardrails/resources/responsessrc/guardrails/resources/responses | 230:254 (7%)299:323 (7%) | view | |
| 17 | x 2 | src/guardrailssrc/guardrails | 267:287 (3%)447:467 (3%) | view | |
| 17 | x 2 | src/guardrailssrc/guardrails | 447:467 (3%)609:629 (3%) | view | |
| 17 | x 2 | src/guardrails/resources/responsessrc/guardrails/resources/responses | 264:281 (6%)333:350 (6%) | view | |
| 17 | x 2 | src/guardrails/resources/chatsrc/guardrails/resources/responses | 184:201 (15%)264:281 (6%) | view | |
| 17 | x 2 | src/guardrails/resources/chatsrc/guardrails/resources/responses | 184:201 (15%)333:350 (6%) | view | |
| 16 | x 2 | src/guardrails/evals/coresrc/guardrails/evals/core | 234:257 (7%)281:304 (7%) | view | |
| 15 | x 2 | src/guardrailssrc/guardrails | 211:233 (2%)382:404 (2%) | view | |
| 15 | x 2 | src/guardrailssrc/guardrails | 269:287 (2%)795:813 (2%) | view | |
| 15 | x 2 | src/guardrailssrc/guardrails | 382:404 (2%)555:577 (2%) | view | |
| 15 | x 2 | src/guardrailssrc/guardrails | 611:629 (2%)795:813 (2%) | view | |
| 14 | x 2 | src/guardrailssrc/guardrails | 60:78 (15%)117:135 (15%) | view | |
| 13 | x 2 | src/guardrailssrc/guardrails | 211:230 (2%)708:727 (2%) | view | |
| 13 | x 2 | src/guardrailssrc/guardrails | 382:401 (2%)708:727 (2%) | view | |
| 13 | x 2 | src/guardrailssrc/guardrails | 555:574 (2%)708:727 (2%) | view | |
| 13 | x 2 | src/guardrails/resources/responsessrc/guardrails/resources/responses | 60:78 (5%)130:148 (5%) | view | |
| 12 | x 2 | src/guardrailssrc/guardrails | 285:299 (3%)343:357 (3%) | view | |
| 12 | x 2 | .agents/skills/implementation-final-review/scripts.agents/skills/implementation-final-review/scripts | 1042:1053 (<1%)1291:1302 (<1%) | view | |
| 12 | x 2 | src/guardrailssrc/guardrails/evals/core | 394:409 (3%)57:71 (4%) | view | |
| 10 | x 2 | src/guardrailssrc/guardrails | 180:194 (1%)536:549 (1%) | view | |
| 10 | x 2 | src/guardrailssrc/guardrails | 180:194 (1%)692:703 (1%) | view | |
| 10 | x 2 | src/guardrailssrc/guardrails | 295:307 (1%)477:489 (1%) | view | |
| 10 | x 2 | src/guardrailssrc/guardrails | 351:365 (1%)536:549 (1%) | view | |
| 10 | x 2 | src/guardrailssrc/guardrails | 351:365 (1%)692:703 (1%) | view | |
| 10 | x 2 | src/guardrailssrc/guardrails | 477:489 (1%)637:649 (1%) | view | |
| 10 | x 2 | src/guardrailssrc/guardrails | 536:549 (1%)692:703 (1%) | view | |
| 10 | x 2 | src/guardrails/resources/responsessrc/guardrails/resources/responses | 46:57 (3%)217:227 (3%) | view | |
| 10 | x 2 | src/guardrailssrc/guardrails | 47:58 (10%)104:115 (10%) | view | |
| 10 | x 2 | src/guardrailssrc/guardrails | 55:64 (10%)75:84 (10%) | view | |
| 10 | x 2 | src/guardrailssrc/guardrails | 112:121 (10%)132:141 (10%) | view | |
| 10 | x 2 | src/guardrails/evals/coresrc/guardrails/evals/core | 404:414 (3%)418:428 (3%) | view | |
| 9 | x 2 | src/guardrailssrc/guardrails | 507:533 (1%)665:689 (1%) | view | |
| 9 | x 2 | src/guardrails/resources/responsessrc/guardrails/resources/responses | 76:84 (3%)252:260 (3%) | view | |
| 9 | x 2 | src/guardrails/resources/responsessrc/guardrails/resources/responses | 87:96 (3%)156:165 (3%) | view | |
| 9 | x 2 | src/guardrails/resources/responsessrc/guardrails/resources/responses | 212:222 (3%)285:295 (3%) | view | |
| 9 | x 2 | src/guardrailssrc/guardrails | 262:272 (2%)321:331 (2%) | view | |
| 9 | x 2 | src/guardrails/checks/textsrc/guardrails/checks/text | 580:588 (1%)600:608 (1%) | view | |
| 9 | x 2 | src/guardrails/checks/textsrc/guardrails/checks/text | 490:499 (<1%)557:566 (<1%) | view | |
| 9 | x 2 | src/guardrails/resources/chatsrc/guardrails/resources/responses | 104:113 (8%)156:165 (3%) | view | |
| 8 | x 2 | src/guardrailssrc/guardrails | 153:173 (1%)324:344 (1%) | view | |
| 8 | x 2 | src/guardrailssrc/guardrails | 255:263 (1%)426:434 (1%) | view | |
| 8 | x 2 | src/guardrailssrc/guardrails | 255:263 (1%)766:774 (1%) | view | |
| 8 | x 2 | src/guardrailssrc/guardrails | 426:434 (1%)597:605 (1%) | view | |
| 8 | x 2 | src/guardrailssrc/guardrails | 489:497 (1%)834:842 (1%) | view | |
| 8 | x 2 | src/guardrailssrc/guardrails | 597:605 (1%)766:774 (1%) | view |
Most Frequent Duplicates
The list of 50 most frequently found duplicates.
| Size | # | Folders | Files | Lines | Code |
|---|---|---|---|---|---|
| 6 | x 11 | src/guardrails/resources/chatsrc/guardrails/resources/responsessrc/guardrails/resources/chatsrc/guardrails/resources/chatsrc/guardrails/resources/chatsrc/guardrails/resources/responsessrc/guardrails/resources/responsessrc/guardrails/resources/responsessrc/guardrails/resources/responsessrc/guardrails/resources/responses... | 118:123 (5%)101:106 (2%)126:131 (5%)188:193 (5%)196:201 (5%)109:114 (2%)168:173 (2%)268:273 (2%)276:281 (2%)337:342 (2%)... | view | |
| 6 | x 5 | src/guardrails/resources/chatsrc/guardrails/resources/responsessrc/guardrails/resources/chatsrc/guardrails/resources/responsessrc/guardrails/resources/responses | 119:124 (5%)102:107 (2%)189:194 (5%)269:274 (2%)338:343 (2%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 296:301 (1%)478:483 (1%)638:643 (1%)824:829 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 309:315 (1%)491:497 (1%)651:657 (1%)836:842 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 218:225 (1%)389:396 (1%)562:569 (1%)715:722 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 213:222 (1%)384:393 (1%)557:566 (1%)710:719 (1%) | view | |
| 6 | x 4 | src/guardrails/resources/responsessrc/guardrails/resources/responsessrc/guardrails/resources/responsessrc/guardrails/resources/responses | 61:68 (2%)131:138 (2%)231:238 (2%)300:307 (2%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 276:283 (1%)456:463 (1%)618:625 (1%)802:809 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 273:278 (1%)453:458 (1%)615:620 (1%)799:804 (1%) | view | |
| 6 | x 4 | src/guardrails/resources/responsessrc/guardrails/resources/responsessrc/guardrails/resources/responsessrc/guardrails/resources/responses | 62:70 (2%)132:140 (2%)232:240 (2%)301:309 (2%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 186:194 (1%)357:365 (1%)541:549 (1%)696:703 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 220:227 (1%)391:398 (1%)564:571 (1%)717:724 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 183:190 (1%)354:361 (1%)538:545 (1%)693:699 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 256:262 (1%)427:433 (1%)598:604 (1%)767:773 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 271:276 (1%)451:456 (1%)613:618 (1%)797:802 (1%) | view | |
| 6 | x 4 | src/guardrails/resources/responsessrc/guardrails/resources/responsessrc/guardrails/resources/responsessrc/guardrails/resources/responses | 46:51 (2%)121:126 (2%)217:222 (2%)290:295 (2%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 185:193 (1%)356:364 (1%)540:548 (1%)695:702 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 184:191 (1%)355:362 (1%)539:546 (1%)694:700 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 272:277 (1%)452:457 (1%)614:619 (1%)798:803 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 274:279 (1%)454:459 (1%)616:621 (1%)800:805 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 211:220 (1%)382:391 (1%)555:564 (1%)708:717 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 255:260 (1%)426:431 (1%)597:602 (1%)766:771 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 275:282 (1%)455:462 (1%)617:624 (1%)801:808 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 222:228 (1%)393:399 (1%)566:572 (1%)719:725 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 269:275 (1%)449:455 (1%)611:617 (1%)795:801 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 279:287 (1%)459:467 (1%)621:629 (1%)805:813 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 180:189 (1%)351:360 (1%)536:544 (1%)692:698 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 277:284 (1%)457:464 (1%)619:626 (1%)803:810 (1%) | view | |
| 6 | x 4 | src/guardrails/resources/responsessrc/guardrails/resources/responsessrc/guardrails/resources/responsessrc/guardrails/resources/responses | 63:71 (2%)133:141 (2%)233:241 (2%)302:310 (2%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 295:300 (1%)477:482 (1%)637:642 (1%)823:828 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 219:226 (1%)390:397 (1%)563:570 (1%)716:723 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 223:230 (1%)394:401 (1%)567:574 (1%)720:727 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 217:223 (1%)388:394 (1%)561:567 (1%)714:720 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 278:285 (1%)458:465 (1%)620:627 (1%)804:811 (1%) | view | |
| 6 | x 4 | src/guardrailssrc/guardrailssrc/guardrailssrc/guardrails | 257:263 (1%)428:434 (1%)599:605 (1%)768:774 (1%) | view | |
| 6 | x 3 | src/guardrails/resources/chatsrc/guardrails/resources/responsessrc/guardrails/resources/responses | 107:112 (5%)90:95 (2%)159:164 (2%) | view | |
| 6 | x 3 | src/guardrails/resources/chatsrc/guardrails/resources/responsessrc/guardrails/resources/responses | 105:111 (5%)88:94 (2%)157:163 (2%) | view | |
| 6 | x 3 | src/guardrails/resources/chatsrc/guardrails/resources/responsessrc/guardrails/resources/responses | 153:158 (5%)230:235 (2%)299:304 (2%) | view | |
| 6 | x 3 | .agents/skills/implementation-final-review/scripts.agents/skills/implementation-final-review/scripts.agents/skills/implementation-final-review/scripts | 140:145 (<1%)481:486 (<1%)492:497 (<1%) | view | |
| 6 | x 3 | src/guardrailssrc/guardrailssrc/guardrails | 297:304 (1%)479:486 (1%)639:646 (1%) | view | |
| 6 | x 3 | src/guardrails/evals/coresrc/guardrails/evals/coresrc/guardrails/evals/core | 409:414 (2%)423:428 (2%)432:437 (2%) | view | |
| 6 | x 3 | src/guardrails/resources/chatsrc/guardrails/resources/responsessrc/guardrails/resources/responses | 192:197 (5%)272:277 (2%)341:346 (2%) | view | |
| 6 | x 3 | src/guardrails/resources/chatsrc/guardrails/resources/responsessrc/guardrails/resources/responses | 190:195 (5%)270:275 (2%)339:344 (2%) | view | |
| 6 | x 3 | src/guardrails/evals/coresrc/guardrails/evals/coresrc/guardrails/evals/core | 408:413 (2%)422:427 (2%)431:436 (2%) | view | |
| 6 | x 3 | src/guardrailssrc/guardrailssrc/guardrails | 268:274 (1%)448:454 (1%)610:616 (1%) | view | |
| 6 | x 3 | src/guardrails/resources/chatsrc/guardrails/resources/responsessrc/guardrails/resources/responses | 186:191 (5%)266:271 (2%)335:340 (2%) | view | |
| 6 | x 3 | src/guardrailssrc/guardrailssrc/guardrails | 225:232 (1%)396:403 (1%)569:576 (1%) | view | |
| 6 | x 3 | src/guardrails/resources/chatsrc/guardrails/resources/responsessrc/guardrails/resources/responses | 79:84 (5%)60:65 (2%)130:135 (2%) | view | |
| 6 | x 3 | src/guardrails/resources/chatsrc/guardrails/resources/responsessrc/guardrails/resources/responses | 125:130 (5%)108:113 (2%)167:172 (2%) | view | |
| 6 | x 3 | src/guardrails/checks/textsrc/guardrails/checks/textsrc/guardrails/checks/text | 49:54 (1%)42:47 (3%)54:59 (4%) | view |
About This Analysis
- For duplication, we look at places in code where there are 6 or more lines of code that are exactly the same.
- Before duplication is calculated, the code is cleaned to remove empty lines, comments, and frequently duplicated constructs such as imports.
- You should aim at having as little as possible (<5%) of duplicated code as high-level of duplication can lead to maintenance difficulties, poor factoring, and logical contradictions.
Learn more...
- To learn more about duplications and techniques for eliminating duplication, Sokrates recommends the following resources:
- Avoid Repetition, MartinFlower.com (IEEE Software article)
- Refactoring duplicated code, sourcemaking.com
- Beck Design Rules, MartinFowler.com
- DRY (Don't Repeat Yourself) Principle, Wikipedia
- The Cut-and-Paste Programming Software Development Anti-Pattern, sourcemaking.com
- Code Smells / Duplicated Code, Jeff Atwood, codinghorror.com:
- "Duplicated code is the bane of software development. Stamp out duplication whenever possible. You should always be on the lookout for more subtle cases of near-duplication, too. Don't Repeat Yourself!"
- Reducing Coupling, MartinFlower.com (IEEE Software article):
- "There are several ways to describe coupling, but it boils down to this: If changing one module in a program requires changing another module, then coupling exists. ... Duplication always implies coupling, because changing one piece of duplicate code implies changing the other."