Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
Binary file modified .coverage
Binary file not shown.
3 changes: 1 addition & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ jobs:
| MI (normalized) | ${qpe.mi_normalized.toFixed(3)} | Maintainability Index / 100 |
| Smell Penalty | ${qpe.smell_penalty.toFixed(3)} | Weighted code smell deduction |
| Adjusted Quality | ${qpe.adjusted_quality.toFixed(3)} | MI × (1 - smell_penalty) + bonuses |
| Effort Factor | ${qpe.effort_factor.toFixed(2)} | log(Halstead Effort + 1) |

<details>
<summary>Code Smell Breakdown</summary>
Expand All @@ -82,7 +81,7 @@ jobs:

</details>

> Higher QPE = better quality per unit effort`;
> Higher QPE = better quality`;

const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
Expand Down
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,8 @@ You workflow should be incremental with a stepping back review phase after each
- Note any design choices or decisions you are not sure about and request the user for comments
- Look for and point out dead or duplicated code branches that could be DRYed
- Double check the README.md or other documentation to remove outdated sections
- Be wary of unconstrained and overly generic types in arguments and returns. Introduce ADT using dedicated Pydantic BaseModel and a domain-driven approach, if the current ones are not sufficient. Use pattern matches on these types instead of hasattr/getattr decomposition
- Be wary of unconstrained and overly generic types in function signatures, and make sure type hints are present in all signatures. Introduce ADT using dedicated Pydantic BaseModel and a domain-driven approach, if the current ones are not sufficient. Use pattern matches on these types instead of hasattr/getattr decomposition
- **Leverage Pydantic validation**: When adding new configuration parameters or architectural constraints, use Pydantic field validators (`@field_validator`) to catch errors early with helpful messages
- **Use domain models**: Replace isinstance/hasattr patterns with domain objects that use pydantic's `BaseModel`
- Always run tests with pytest as final verification step for newly added code
- any use of `hasattr` and `.get()` with defaults and similar existence checks on objects are code smells (!) and indication that proper configuration or domain object models need to be reviewed
- any use of `hasattr` and `.get()` with defaults and similar existence checks on objects are code smells (!) and indication that proper configuration or domain object models need to be reviewed
Loading
Loading