См. Наш SD Smart Differencer , который вычисляет разность на основе AST (дерево) и сообщает об изменениях, сделанных с точки зрения грамматических токенов (терминалов и нетерминалов) и примененных к ним действий (вставка, удаление, перемещать, копировать, переименовывать-идентификатор-внутри).
Он не предоставляет статистику, которую вы хотите напрямую, но вы можете использовать идентифицированные токены грамматики для классификации изменений в соответствии с вашими категориями выше (для этого нужна грамматика; используйте грамматику в справочном руководстве по Java).