def plugin_can_run(self, plugin, show_reason=False):
        if not self.chosen_plugin(plugin, show_reason=show_reason):
            return False  # Skip not chosen plugins
        # Grep plugins to be always run and overwritten (they run once after semi_passive and then again after active):
        if self.PluginAlreadyRun(plugin) and ((not self.force_overwrite() and not ('grep' == plugin['type'])) or plugin['type'] == 'external'):
            if show_reason:
                logging.warning(
                    "Plugin: %s (%s/%s) has already been run, skipping...",
                    plugin['title'],
                    plugin['group'],
                    plugin['type'])
            return False
        if 'grep' == plugin['type'] and self.PluginAlreadyRun(plugin):
            # Grep plugins can only run if some active or semi_passive plugin was run since the last time
            return False
        return True
Verify that a plugin can be run by OWTF.
dataset/ETHPy150Open owtf/owtf/framework/plugin/plugin_handler.py/PluginHandler.plugin_can_run