Detecting patterns and antipatterns in software using Prolog rules | IEEE Conference Publication | IEEE Xplore