Skip to content

The Ptidej tool suite to evaluate and enhance the quality of object-oriented programs, promoting the use of patterns, at the language-, design-, or architectural-levels

License

Notifications You must be signed in to change notification settings

ptidejteam/ptidej-Ptidej

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ptidej

License: GPL v2 Java Apache Maven

In the Ptidej Team (Pattern Trace Identification, Detection, and Enhancement in Java), we aim at developing theories, methods, and tools, to evaluate and improve the quality of object-oriented programs by promoting the use of idioms, design patterns, and architectural patterns. We want to formalise patterns, identify occurrences of patterns, and improve the identified occurrences. We also want to evaluate experimentally the impact of patterns on the quality of object-oriented programs. We develop various tools, most notably the Ptidej tool suite and Taupe, to evaluate and enhance the quality of object-oriented programs, promoting the use of patterns, at the language, design, and architectural levels.

The source code of the Ptidej Tool Suite is open and released under the GNU Public License v2.

What is it?

What do I need?

  • Maven version 3.9.6
  • Java 21 (but not more recent because of some mismatch with Eclipse)

How do I set it up?

To build the whole project, use:

mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false
mvn clean
mvn validate
mvn install
  • mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false cleans your local Maven repository.
  • mvn validate installs 3rd party JARs, like cfparse and db4o.
  • mvn install compiles, tests, packages, and installs all the sub-projects.

After executing these commands, run:

java -jar "DeMIMA UI Viewer Standalone Swing/target/demima-ui-viewer-swing-1.0.0-jar-with-dependencies.jar"

This JAR launches a Swing GUI to interact with the Ptidej Tool Suite.

Who do I talk to?

Troubleshooting

Some sub-projects must be compiled towards bytecode for Java 1.4. This requirement is enforced in the appropriate pom.xml files. The whole projects and some sub-projects also require specific --add-exports and --add-opens arguments to the JVM, which are also already set in the corresponding pom.xml files. These arguments are:

--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED

Guidelines

  • Writing tests
  • Code review
  • Other guidelines

TODO

In some order of importance:

  • Migrate the use of the cfparse library to the bcel library
    • Use util.lang.CFParseBCELConvertor?
  • Fix tests in PADL Creator C++ (Eclipse)
  • Add tests to Creator MSE
  • Add tests to PADL Generator PageRank
  • Clean test outputs
    • Fix/hide any exceptions
  • Maven-ise Caffeine
  • Change the encoding from windows-1252 to UTF-8
  • Refactoring the code to make full use of Java 17
  • Remove compilation warnings
  • Fix extremely slow and memory-consuming running of Ptidej from JAR
    • java -jar "DeMIMA UI Viewer Standalone Swing/target/demima-ui-viewer-swing-1.0.0-jar-with-dependencies.jar"
  • Fix JPG export from the menu Export SVG in ...Swing
  • Simplify and update "About" in ...Swing
  • Find an alternative to using the com.sun.tools.javac library, which is internal to the JDK.
  • Add GitHub Actions to compile/test the whole project