PR-Miner: automatically extracting implicit programming rules and detecting violations in large software code