code: def analyze_module(self, resource, should_analyze=lambda py: True,
                         search_subscopes=lambda py: True, followed_calls=None):
          
          if followed_calls is None:
              followed_calls = self.project.prefs.get('soa_followed_calls', 0)
          pymodule = self.resource_to_pyobject(resource)
          self.module_cache.forget_all_data()
          rope.base.oi.soa.analyze_module(
              self, pymodule, should_analyze, search_subscopes, followed_calls)
docs: Analyze `resource` module for static object inference
  
          This function forces rope to analyze this module to collect
          information about function calls.  `should_analyze` is a
          function that is called with a `PyDefinedObject` argument.  If
          it returns `True` the element is analyzed.  If it is `None` or
          returns `False` the element is not analyzed.
  
          `search_subscopes` is like `should_analyze`; The difference is
          that if it returns `False` the sub-scopes are all ignored.
          That is it is assumed that `should_analyze` returns `False`
          for all of its subscopes.
  
          `followed_calls` override the value of ``soa_followed_calls``
          project config.