Proceedings of the 42nd Annual Southeast Regional Conference 2004
DOI: 10.1145/986537.986574
|View full text |Cite
|
Sign up to set email alerts
|

Automated auditing of design principle adherence

Abstract: Software design patterns and refactoring browsers are useful tools in developing high-quality software. Object-Oriented Oracle (OOO) is a tool that combines patterns and refactoring and extends them with the ability to recognize when the source-base doesn't adhere to software design principles. OOO relies on sophisticated compiler analyses and a set of heuristics to recognize characteristics of the code where a design principle is applicable, but is not being used. We present an example where the OOO can recog… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1

Citation Types

0
1
0

Year Published

2010
2010
2010
2010

Publication Types

Select...
1
1

Relationship

0
2

Authors

Journals

citations
Cited by 2 publications
(1 citation statement)
references
References 5 publications
0
1
0
Order By: Relevance
“…A Point p1 = new Point(1,2,3,4); Point p2 = new Point(1,2,3,4); assert p1.equals(p2) && p2.equals(p1); HashSet<Point> pSet = new HashSet<Point>(); ArrayList<Point> pList = new ArrayList<Point>(); pList.add(p1); pSet.add(p1); assert pList.contains(p2); // true assert pSet.contains(p2); // false --error Listing 5. Consequence of equals not being in line with hashCode number of tools [8,12] can easily spot this trivial mistake and enforce implementation of both methods at once. A human inspector however can easily miss this mistake because "the mistake lies in what is missing" [8].…”
Section: The Relationship Between Equals and Hashcodementioning
confidence: 99%
“…A Point p1 = new Point(1,2,3,4); Point p2 = new Point(1,2,3,4); assert p1.equals(p2) && p2.equals(p1); HashSet<Point> pSet = new HashSet<Point>(); ArrayList<Point> pList = new ArrayList<Point>(); pList.add(p1); pSet.add(p1); assert pList.contains(p2); // true assert pSet.contains(p2); // false --error Listing 5. Consequence of equals not being in line with hashCode number of tools [8,12] can easily spot this trivial mistake and enforce implementation of both methods at once. A human inspector however can easily miss this mistake because "the mistake lies in what is missing" [8].…”
Section: The Relationship Between Equals and Hashcodementioning
confidence: 99%