Fine-grained just-in-time defect prediction