DLint: dynamically checking bad coding practices in JavaScript | Synapse