Skip to content

Tracking TODOs #1

Open
Open
@owolabileg

Description

@owolabileg
  • We should change to depend on the javaparser jar instead of having our own code. Most of the parser code is from an older version of this code here: https://github.com/javaparser/javaparser ; specifically in what is now the javaparser-core module.
  • Add tests to ensure that new JavaMOP with dependency on javaparser parses all our 161 tests
  • Remove in rv-monitor any attempt to download jars from runtimeverification S3
  • Remove in javamop any attempt to download jars from runtimeverification S3
  • Remove the Token.java that is committed to the repo (for AspectJ)
  • (Hack) Add a script to create our own version of JavaParser that we depend on
  • Use ASM to change JavaParser so that we don't need to install our own hacked version
  • Refactor RemovePointCutVisitor.java to look like the rest of the PointCutVisitors
  • Merge JavaMOP and RV-Monitor
  • Restore agent generation from inside Java
  • Specification.java is duplicated between JavaMoP and RV monitor. Eliminate redundancy.
  • why the need for ast and astex packages, given the super similar files in both?
  • Look into JavaCC 21 so that we can compose .jj files
  • Remove PositionString class from aspectj.jj
  • Remove Modifiers class from aspectj.jj
  • Consider options for removing the current hack of extending javaparser classes
  • Consider moving QualifiedNameExpr from RVM to JavaMOP
  • Handle annotations in ClassOrInterfaceType, PrimitiveType, InstanceOfExpression. Currently, we just ignore by setting to null
  • Investigate what happened to the methods IntegerLiteralMinValueExpr.isMinValue() and LongLiteralMinValueExpr.isMinValue() in javaparser's history
  • Use javacc for parsing .rvm specs instead of the current rule based approach, e.g., parseUntilX() methods. The current approach is very brittle. For example, the current scheme will break if we have import java.io.*; full-binding UnsafeMapIterator(Map map, Collection c, Iterator i) { on the same line.
  • Revisit the field names in Event.java, Specification.java, MonitorFile.java and all related classes to make sure that they make sense. E.g., name in Property.java should really be logic, definition in Event.java should be parameters, syntax in Property should be specification etc. This will make it easier to map to the things that we write in our papers.
  • Some fields in Specification.java are not used and should be removed, e.g., preDeclarations.
  • Can we not be parsing formulas in .mop files as strings with the getFormula in the javamop.jj file? Why not have EBNF rules for each logic?
  • it seems that pointCutParser is called multiple times. Why?
  • do we really need the clone() in EventManager.java:100?
  • in RemoveThreadVisitor.java, the visit(ThreadPointCut, Integer) method used to return null, but I changed it to return the pointcut. Not sure why returning null was needed in the old code, especially as that line was never invoked.
  • when processing specs where the execution Thread t is a parameter, and thread(t) is a pointcut, the master branch removes the pointcut and adds Thread t = Thread.currentThread(); to the advice body when generating the aspectj file. Is there a reason for that? Current code does not yet do that, and should be revisited in the future.
  • in the master branch's unit tests, the AST obtained from parsing various MOP constructs was being checked, in addition to checking the results of printing out the AST. Unfortunately, the way of doing so was a bit brittle: objects from when JavaMOP inlined the whole of javaparser were serialized and used as expected output. Now that we changed the code to use javaparser as a library, all of those serialized files are no longer useful for comparison. So they have been removed and we only check the string outputs now. We should revisit testing the AST directly in the future.
  • Make all integration tests pass after merging RVM and JavaMOP and bringing back agent generation code.
  • Set up CI
  • Remove RV C files
  • Writing unit tests for rv-monitor in a way that allows to do IDE-level debugging will require significant changes to the way plugins are loaded.
  • There is a parse error when processing SRS/EqualityCheck/rvm/EqualityCheck.rvm
  • Remove all code related to EnforceMOP
  • What does Main.options.internalBehaviorObserving do?
  • Use direct method calls instead of connectToServer
  • Use code generation to create all output, instead of string concatenation all over the place

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions