- [Done] Created a Wiki Page for the project
- [Done] Defined Architechural drivers and concerns
- [Done] Revised deliverables and discuss on potential cause of concerns
- [Done] Chose reference architechure
- [Done] Finalize architechural design document
- [Done] Research on possible checks for linter
- "Architechural concerns" should encompass the reality of the project constraints, including any human elements and overall deliverables and not just 'general' concerns for implementation.
- Possible checks
- Styles
- Naming Convention (camel case)
- Unused variables
- Lack of Error handling
- Unused Method
- Missing semi-colons
- unused dependencies
- wildcard imports
- Principles
- Method chaining
- Inheritence
- Encapsulation
- Coherence
- Single-Class Implementations
- Long parameter Lists
- Patterns
- Observer
- Decorator
- Template method
- Styles
- Decided some checks are not possible (PLK, wildcard import)
- [done] fixed ConfigInfo to recursively look for path
- folders paths are treated as files paths, leading to error when parsing classes
- Fixed config parser to parse paths recursively
-
[done] unused variable check
- algo
- Put all declared fields and local variables into a counter
- increment counter if there is a usage found
- check if any vars or field counters is still 0
- algo
-
[50%] think abt algo for coupling and cohesion check
- Build dependency graph (or matrix)
TODO: matrix might be better tbh
- Each dependency edge also have a "count", which is the number of methods dependent on a class
- Check if [a][b] and [b][a] has a high count
- flag warning if yes
- Build dependency graph (or matrix)
TODO: matrix might be better tbh