If this is your product, you can request to edit it here.
Version Reviewing: 5.5
"nice"
Summary:
awesome
"great tool"
Summary:
awesome performance
"Daikon is a powerful and reliable tool"
Summary:
I am very impressed with the Daikon tool. Daikon is an implementation of dynamic detection of likely invariants; that is, the Daikon invariant detector reports likely program invariants. For my purposes, an invariant is a property that holds at a certain point or points in a program; these are often used in assert statements, documentation, and formal specifications. Examples include being constant (x=a), non-zero (x<>0), being in a range (a@?x@?b), linear relationships (y=ax+b), ordering (x@?y), functions from a library (x=fn(y)), containment (x@?y), sortedness (xissorted), and many more. Users can extend Daikon to check for additional invariants. Dynamic invariant detection runs a program, observes the values that the program computes, and then reports properties that were true over the observed executions. Dynamic invariant detection is a machine learning technique that can be applied to arbitrary data. Daikon can detect invariants in C, C++, Java, and Perl programs, and in record-structured data sources; it is easy to extend Daikon to other applications. Invariants can be useful in program understanding and a host of other applications. Daikon's output has been used for generating test cases, predicting incompatibilities in component integration, automating theorem proving, repairing inconsistent data structures, and checking the validity of data streams, among other tasks. It should be noted that Daikon is freely available in source and binary form, along with extensive documentation, at http://pag.csail.mit.edu/daikon/. All that being said, there are some drawbacks to consider: 1.) Invariants may not be true 2.) May only be true for this test suite, but falsified by another program execution 3.) May detect uninteresting invariants 4.) Some may actually tell you about the test suite, not the program (still useful) 5.) May miss some invariants 6.) Detects all invariants in a class, but not all interesting invariants are in that class 7.) Only reports invariants that are statistically unlikely to be Coincidental 8.) Program requires a reasonable test suite
|
What does this code do?
public class Demo { public void method1() { synchronized (String.class) { System.out.println("on String.class object"); synchronized (Integer.class) { System.out.println("on Integer.class object"); } } }
Programming Language: Java