Analysers specific events ------------------------- Each analyser level extension has it's own events set and order. For example, JEE and DotNet will broadcast event for classes but Universal Anbalyser is so abstract and agnostic that it cannot. Here are the specific callbacks with their relative order for each different analyser extension. ABAP Analyser specificities *************************** .. toctree:: :maxdepth: 3 ABAP Extension ============== .. automodule:: cast.analysers.abap :members: JEE Analyser specificities ************************** .. toctree:: :maxdepth: 3 JEE Extension ============= .. automodule:: cast.analysers.jee :members: Events order ============ On a classical JEE analysis job, the event from :class:`cast.analysers.jee.Extension` will be triggered in the following order :: start_analysis(project) start_web_xml(web_xml_file) end_web_xml(web_xml_file) start_types() start_type(t1) start_member(t1_m1) end_member(t1_m1) ... start_member(t1_mn) end_member(t1_mn) end_type(t1) ... start_type(tx) end_type(tx) end_types() start_xml_files() start_xml_file(xml_file1) end_xml_file(xml_file1) ... end_xml_files() start_web_files() start_web_file(web_file1) end_web_file(web_file1) ... end_web_files() end_analysis() Manipulating options ==================== During :func:`cast.analysers.jee.Extension.start_analysis`, one may register handling of xml files. If an xml file is not handled at all, this file will not appear in analysis service and will not be accessible for analysis. There are several ways to register xml file : * through file name pattern : :func:`cast.analysers.JEEExecutionUnit.handle_xml_with_filename` * through xpath pattern : :func:`cast.analysers.JEEExecutionUnit.handle_xml_with_xpath`, if an xml file contains a given xpath query .. autoclass:: cast.analysers.JEEExecutionUnit :members: DotNet Analyser specificities ***************************** .. toctree:: :maxdepth: 3 DotNet Extension ================ .. automodule:: cast.analysers.dotnet :members: Events order ============ .. note:: The order is different from CAIP 7.3.3 The events are sent in the following order:: start_analysis(execution_unit) start_project(dotnet_project1) introducing_file(file1) ... introducing_file(filen) start_types() start_type(type1) start_member(member) end_member(member) ... end_type(type1) ... end_types() start_file(file1) end_file(file1) ... end_project() start_project(dotnet_project2) ... end_project() end_analysis() The order is different from 7.3.3. :func:`cast.analysers.dotnet.Extension.start_project` gives the current project options. Partial classes =============== Partial classes are merged when visiting the type and it's members. Universal Analyser specificities ******************************** .. toctree:: :maxdepth: 3 Universal Analyser Extension ============================ .. automodule:: cast.analysers.ua :members: Events order ============ The events are sent in the following order:: start_analysis() start_file(file1) start_object(object1) start_object(object2) end_object(object2) end_object(object1) ... end_file(file1) start_file(file2) end_file(file2) ... end_analysis() See :class:`cast.analysers.ua.Extension`. Events :func:`cast.analysers.jee.Extension.start_object`, :func:`cast.analysers.jee.Extension.end_object` correspond to objects created by pattern inside language pattern file.