Last week I looked at the output that RAM returns. There will be three kind of notifications: notes, warnings and errors. I made a result object that returns these notifications to user, at this point results can be exported as XML or Java objects. XML can be transformed for example to HTML and Java objects can be used by Eclipse or any other program. Each notification contains unique id , explanation, line number and rule name.
I continued to make meta data from rules for RAM. I found a way to make all the possible clauses for patterns from the AST, but data for testing solutions between patterns is still undone. This will probably use something similar as solutions inside patterns. Mark Proctor gave me some advises on impact analysis. How to map the data about rules so that RAM could know which fields from which classes are used in which rules. This way if a field is removed from class, it is possible to see what rules are affected, or if a new rule is added it is possible to check what existing rules this new rule might impact with.
Next step is trying to figure out how to check for missing ranges. ( x > 1 && x < 1 ) should give a warning that x == 1 is not taken care of. To solve this one I need to find all the possible solutions that a rule can have to fire. Then I need to know which rules use the field x, impact analysis will help me with this, after that I can get every possible value that x is being compared to. By comparing these values, I can find out the missing gaps. There is only one but here, what if x is compared to a variable and that variable is binded to a field in a class, but I'm sure there is a solution for that too.
I have been reading that Expert Systems book and it's really interesting. Expert systems are used to replace and help human experts on their work. With expert systems the human expertize can be inserted into a machine. JBoss Rules is expert system shell and a tool for building expert systems. The book introduces another tool called CLIPS. Idea behind CLIPS and Rules is similar so this book helps to understand Rules.