Automatically detect software design patterns by constraint satisfaction using an interactive shell.
This project depends on Scitools Understand for generating dependency matrices. There's also a free student licence
The interactive shell uses [Ammonite](http://www.lihaoyi.com/Ammonite/ m), which not only makes it possible to run the program interatively, but brings the capabilities of scala and bash into the mix.
- Clone repo:
git clone https://github.com/justiceo/praso-dpd
- Install JDK, Scala, SBT (if not already installed):
cd praso-dpd; sudo ./install.sh
- Run:
sbt run
orsbt "run-main DPD.ScalaREPL"
- Run (specify dsm):
sbt "run-main DPD.ScalaREPL dsm/simpleObserverPattern.dsm"
- To run unit tests:
sbt test
- Inspect vetted design pattern implementations (jhotdraw, java-design-patterns, head-first, gof)
- Create rules for as many patterns as possible
- Add discriminatory rules to the patterns to reduce false positives
- Add print pocket method that prints the list in pockets
- Add the IgnoreTest flag to ignore test classes in the patterns
- Implement scoring system
- Install understandand
- Try the new patterns from p.c.
- Add function dsm to the mix
- Use machine learning to detect observer pattern
- Generate dsm and func from source using Understand
- Parse source files for additional meta-data
optimizations
- string paddTo
- 0-range).indices instead of zipWithIndex