Context

Race Conditions are bad because...

Idea

There are some heuristics...

Analysis

With jQAssistant, race conditions can be identified by...


In [1]:
%load_ext cypher

In [2]:
%%cypher
MATCH (c:Class)-[:DECLARES]->(f:Field)<-[w:WRITES]-(m:Method)
WHERE 
    EXISTS(f.static) AND NOT EXISTS(f.final)
RETURN 
    c.name as InClass, 
    m.name as theMethod, 
    w.lineNumber as writesInLine, 
    f.name as toStaticField


3 rows affected.
Out[2]:
InClass theMethod writesInLine toStaticField
BrokenSingleton getInstance 11 INSTANCE
OwnerController processFindForm 110 ownersIndexes
OwnerController processFindForm 110 ownersIndexes

Conclusion

Next steps are to remove...