Best Practices


Track the Number of Functions and Resources

When Learning is active, you can see the number of functions and resources. Continue learning as long as these numbers are growing. The no. of domains doesn’t need to grow and is less important. Once the functions and resource numbers remain the same for a period of time while the system is running, you should probably stop learning and review the data.


Make sure Static Analysis is Present

Make sure you see a count of Total Classes and per-Domain Static Classes if you configured Viper.

To check for Total Classes:

  1. Log into the vFunction Server UI
  2. Select Analysis from the top, center Menu Bar
  3. Find Total Classes under the Analysis Header in the left-hand sidebar

To check for per-Domain Static Classes:

  1. Log into the vFunction Server UI
  2. Select Analysis from the top, center Menu Bar
  3. Click on any Domain in the right-hand sidebar to expand the details about that Domain
  4. Confirm a count is listed for the Static Classes

Review the Notifications

To see the Notifications:

  1. Log into the vFunction Server UI
  2. Select Analysis from the top, center Menu Bar
  3. Click on the bell-shaped icon in the top, right corner of the page

You should see a notification if database tables and beans were detected. If these exist, but were not detected, then review the steps to further debug. If that doesn’t work, contact vFunction support.

Other notifications may include things like missing Jars, classes detected in dynamic analysis but not in static analysis, classes that were detected outside the configuration namespace scope (“classes to include”) and more.


Dead Code Classes in the Monolith

To see Dead Code Classes in the Monolith:

  1. Log into the vFunction Server UI
  2. Select Analysis from the top, center Menu Bar
  3. Click Application in the bottom-right corner of the right-hand sidebar
  4. Click VIEW next to Dead-code classes in the expanded choices below Application

Review the list of Dead-Code classes. You may find that some key classes were not covered and this may indicate that some functionality was not covered enough by the learning flows.