Skip to content

BroadcomMFD/app-analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

Code4z App Analyzer

The App Analyzer extension is designed to provide interconnection between App Analyzer and source files available from your Visual Studio Code.

App Analyzer is integrated into VS Code and provides access to analysis features directly from your local source files. The App Analyzer extension includes the following features:

  • Code analysis - classic dependency analysis, top-down or bottom-up, including data flow or impact analysis.
  • Cluster analysis - identification of dependencies between functional entities within applications
  • Source code explorer - enables search across source types and repository information.

Business value:

  • Increased Developer Productivity: Find dependencies between entities, allowing you to confidently make updates to your code.


This extension is part of the Code4z experience.

Code4z App Analyzer is part of the Code4z experience from Broadcom, which offers a modern experience for mainframe application developers. To get started with Code4z, check out our foundational extension pack.



Address Software Requirements

Before you use the App Analyzer extension, ensure that you meet the following prerequisites:

Client:

  • If you are using the COBOL Language Support (LS) VS Code extension, change the following setting to disable the semantic check feature: Open the COBOL Language Support extension settings and change Analysis mode to BASIC. Changing the setting to BASIC removes false positive error diagnostics from Cobol LS when viewing source code in App Analyzer. For more information about the COBOL LS VS Code extension, see COBOL Language Support.

Server:

  • App Analyzer requires a connection to an App Analyzer Server. Open Settings (File > Preferences > Settings) and navigate to Extensions/App Analyzer Configuration. Enter the URL of your server instance at "Api base URL".

Getting Started

Open the Extension View

To open the extension

Press Ctrl+Shift+P and run:

App Analyzer: Open App Analyzer

Or use the context menus available in the tree view or inside the file itself.

The extension view opens automatically with the first App Analyzer action executed through the context menu.

At your first login you are prompted for the username and password of your App Analyzer user account.

If your organization has set up App Analyzer with SSO (Single Sign On) support, a browser opens and redirect to the corresponding login page.

After logging in, the extension opens in a new tab within VS Code. To log out, click the account icon in the bottom-left corner of the VS Code editor, select App Analyzer Auth, and then choose Sign Out.

Administration

Administration is available to users with ADMIN role. Access administration using the menu at the top-right corner of your extension view.

Connecting to App Analyzer repositories

Use the "Repositories" tab to add and configure database connections to App Analyzer repositories. Connections can be assigned to one or many users.

Adding users

Use the 'Users' tab to add and configure user accounts for App Analyzer.

Select a repository

Use the dropdown menu at the top-right corner of your extension view to select an App Analyzer repository available to your user account.

Review Basic Functions

User Account Administration

The gear icon at the top right is where you find various settings such as your Account details, Diagnostics, and an About area describing the version. Additional options differ based on your user role.

Main Navigation Area

In the main navigation area, you find icons that correspond to different functions such as the following:

  1. Modules - Module analysis
  2. Items - Item analysis
  3. Datas - Data analysis
  4. Clusters - Clustering
  5. Dynamic SQL Search - Dynamic SQL search
  6. Source Explorer - Source explorer

Some functions might differ depending on your App Analyzer version and the enabled features.

Search Functions

Functions 1-4 (modules, items, datas, and clusters) provide the same search functionality. Clicking into one of the selection fields displays a list of elements that can be used to select a list item directly. Typically you have either a part of a name or you can provide an SQL-like pattern to get a filtered list. Another option is to click the icon that looks like a "play" button to get all elements from the repository grouped by their type.

Grid Functions

Functions 1-4 (modules, items, datas, and clusters) provide the same options for displaying repository grids. Within the repository, modules and module relations (or other types and their relations) are distinguished based on the selection of either GRID or RELATIONS GRID. When displaying a grid, you can sort or expand them as required. Once an item is right clicked, you have different options based on the selection of the grid, typically you open source code or start with an analysis collection. You can select more than one item from the grid with ctrl+left click.

Filter Functions

Grid elements can be filtered directly on the column header or by clicking on the FILTER element. Multiple clauses and arguments can be combined and you can define the columns to view.

Settings

The settings gear icon enables additional configuration for functions 1-5. Settings are persisted across analysis sessions.

Context Menus

Context menus are accessed by right clicking on an element in the grid or on an element or group in the results list of the search. Context menus are available for each search result element and depend on the available information and types of the element. If the table or search has the correct column but the information is either empty or not valid, the option is grayed out. A hover over the area displays a tool tip with more information. Each module, item, datas, and clusters has some common context menus and some that are unique to it. For dynamic SQL, the context menus depend on the columns requested.

Code Analysis

Analyzing dependencies between application modules is one of the major functionalities of App Analyzer. Top-down or bottom-up analysis starting from different object types show dependency graphs. More information can be shown for the graph elements and arrows. Hover on an element or arrow to see the source code snippet for the particular relation. Various options or levels of details can be activated or deactivated on demand. For different use cases or visualization modes, you can switch between different views once you have started the analysis. The following are the available views and some typical use cases:

  • Collection overview: Shows dependencies for groups of modules, such as programs and their dependencies. Analysis is not initiated from a given focus module.
  • Object neighborhood: Typically the default entry point for code analysis with a given focus module, such as a program or a database table.
  • IO neighborhood: A specialized view for analyzing I/O dependencies. In addition to the object neighborhood, you can distinguish between I/O modes, for example, just show the reads to a database table.
  • Source neighborhood: Shows dependencies on a source level and is used for analyzing copy or include dependencies of a program or JCL.
  • Focus flow: Shows the internal structure of a program, for example, dependencies between paragraphs or sections.
  • Routine neighborhood: Requires a program as focus module in order to set the focus for this view to a specific section in a COBOL program to analyze the internal structure before and after.

Graph elements typically adhere to the following colors:

  • Programs or more general callable elements are blue.
  • Database tables or files are green.
  • Modules without source code are white.
  • The current focus module is pink.

Arrow colors correspond to the switches in the navigation area.

  • CALL shows call dependencies between elements such as programs or JCLs.
  • IO shows I/O dependencies between elements such as a program and a database table or sequential file.
  • USE shows dependencies that are not CALL or I/O related, for example calls to operating system dependent programs or I/O from a SORT utility call.
  • ALIAS shows programs that use ALIAS names for accessing files. By activating ALIAS you can see the ALIAS dependencies on top of I/O dependencies.
Change Focus

Double-click on a non-focus element to switch the focus to the clicked element. The analysis graph shows the dependencies from the new focus module. Each focus change results in an entry in the analysis history. You can also right-click on an element and click Set focus to change the focus.

Data Flow and Impact Analysis

Whereas the previously discussed analysis cases focused mainly on the object and module dependencies, data flow and impact analysis are one layer below and enable you to analyze attributes of an element. A typical use case is to analyze where a given database column is modified in the application or to analyze the impact of a field change for a variable. Both the data flow and the impact analysis types can be initiated either from the datas search panel, a database grid, or directly from an analysis graph by right-clicking a graph element choosing the New collection: Dataflow or the New collection: Impact option. The starting point is always a single field, variable, or column.

The following are some key differences between data flow analysis and impact analysis.

Data flow shows all relations where data is going from one entity, such as a field or variable, to another one.

  • Statements like MOVE and I/O-Statements lead to such relations.
  • The usage of a variable as a parameter for calling programs or subroutines is also be considered because data is flowing from the actual parameter to the formal parameter.
  • Statements like COMPARE, IF, and so on, do not lead to relations relevant for data flow, because there is no transport of data from one to the other variable.
  • Data flow is always analyzed in one direction, either forward or backward. For example, where is my data going to, or where is my data coming from?

Impact analysis analyzes the impact of changing the type of a field or variable.

  • Because of this, COMPARE relations have to be considered.
  • Additionally BOTH directions of relations have to be evaluated. This applies not only to the starting field, but also for each additional affected field found during the analysis.
  • This makes impact analysis much more complex than the data flow Analysis and can lead to much more information and larger graphs.
Cluster Analysis

Cluster analysis is an additional feature that allows you to see how modules are logically or functionally grouped, such as by business entities. This logical grouping enables you to analyze not just module dependencies but also dependencies between the entity groups. Clustering requires some preparations from an administrator.

Dynamic SQL

This feature provides the possibility to create SQL and search the Repository directly. Experienced App Analyzer users can work directly with the information in the repository tables. These queries can be saved as favorites and used later.

Source Explorer

In addition to storing the parsing results in the repository, App Analyzer also stores the source code itself. This enables you to search for specific text within programs. You can perform a full-text search across different source types and combine the search with additional conditions either for the text search or repository information.

Explore an Application

App Analyzer enables you to determine the interdependencies between applications, programs, and other resources. For example, you might need to make a change to a specific program and you need to find out how the program interacts with other resources so that you can confidently make the change. There are many ways that App Analyzer can help with this task. The following is a simple example to get you started with module analysis.

  1. Click the modules icon.

  2. Find the module name for the program of interest.

  3. Double click the program name to display the first layer of program dependencies.

    By default, a dependency graph is displayed with the highlighted module in focus and one layer of dependencies. The selected program shows any programs that call it and any programs that it calls. This is controlled by the Call slider switch at the top of the extension. The default Object neighborhood is typically the entry point for code analysis of the module in focus.

    AppAnalyzerModulesExample

  4. Turn on I/O analysis with the IO slider switch. This shows any file interactions.

  5. Increase layers or levels of dependencies by increasing the before and after values.

  6. Hover on a resource block to view information about the program, file, or other resource.

  7. Hover on an arrow to see the actual code block for the interaction. For example the program call, the file operation, and so on.

    The arrows are the calls and connections. The direction of the arrow shows the direction of the call, or in the case of I/O, whether the I/O operations are a read, write, or both. App Analyzer is able to determine what programs or files are used by examining all of the copybooks, data set names in JCL, CICS CSD definitions, and more. A module might not have a program or file name directly coded in the source, but App Analyzer determines the value from the analysis. In our example, an EXEC CICS LINK PROGRAM (DOT-SERVICE-PROGRAM) is in the program code source and App Analyzer determines that this equates to the DOT200 program.

    AppAnalyzerDependenciesExample

    Clustering is an additional feature that allows you to see how modules are logically or functionally grouped. Clusters are user-defined and can be set up based on file naming conventions or categorized in other ways. If you have clustering set up, you can view any defined clusters with the following step:

  8. Click the Show Cluster grouping icon.

    In our example, there is a COMMON, DOT (depository of online transactions), and AIS (account information system) cluster. Cluster groupings might be owned by different departments within your organization. If you need to make a change to a program that could affect something in a different cluster, you can inform the other department of your change so they are aware and can test the change. For example, if you need to make a change to program DOT200 in the DOT cluster, you can see that it might affect another cluster like AIS. If the AIS cluster is owned by a different department, you can notify them of the upcoming change.

    AppAnalyzerClusteringExample

Troubleshooting

Errors are logged at output channel App Analyzer

  1. Open the VS Code terminal
  2. Go to OUTPUT
  3. Select App Analyzer from the dropdown

Most errors are shown on the bottom right side of VS Code as messages.

Technical Assistance and Support

The App Analyzer extension is made available to customers on the Visual Studio Code Marketplace in accordance with the terms and conditions contained in the provided End-User License Agreement (EULA).

If you are on active support for App Analyzer, you get technical assistance and support in accordance with the terms, guidelines, details, and parameters that are located within the Broadcom Working with Support guide.

This support generally includes:

  • Telephone and online access to technical support
  • Ability to submit new incidents 24x7x365
  • 24x7x365 continuous support for Severity 1 incidents
  • 24x7x365 access to Broadcom Support
  • Interactive remote diagnostic support
  • Technical support cases must be submitted to Broadcom in accordance with guidance provided in “Working with Support”.

Note: To receive technical assistance and support, you must remain compliant with “Working with Support”, be current on all applicable licensing and maintenance requirements, and maintain an environment in which all computer hardware, operating systems, and third-party software associated with the affected Broadcom software are on the releases and version levels from the manufacturer that Broadcom designates as compatible with the software. Changes you elect to make to your operating environment could detrimentally affect the performance of Broadcom software and Broadcom shall not be responsible for these effects or any resulting degradation in performance of the Broadcom software. Severity 1 cases must be opened via telephone and elevations of lower severity incidents to Severity 1 status must be requested via telephone.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors