← Back to Analyzers

Create New Analyzer

API Key Required

No AI provider is configured. Add a key in Settings › AI Keys before generating analyzers with AI.

How it works

Describe what your analyzer should detect in plain English. The AI will generate a JavaScript analyzer module that integrates with the existing analysis pipeline.

Good descriptions are specific:

Available data reference

controlTree — Unified tree of all controls in the app

  • screens[] — Array of screen nodes
  • components[] — Array of component definitions
  • allNodes[] — Every control node
  • nodeIndex — Map<name, node>
  • Each node: name, type, baseType, isScreen, isComponent, children[], formulas (Map), properties (Map), screen, filePath

refGraph — Cross-reference analysis

  • referencedControls — Map of which controls are referenced where
  • variablesRead — Set of variable names that are consumed
  • collectionsRead — Set of collection names that are consumed

extraction — Formula extraction results

  • allFormulas[] — Every formula with control, property, text, file
  • variableWrites — Map of Set/UpdateContext locations
  • collectionWrites — Map of Collect/ClearCollect locations
  • navigateRefs — Map of Navigate() screen references

See the full data reference with examples →

Describe your analyzer

You can ask the analyzer to check anything the generated module can see in the app’s source: controls and screens, Power Fx formulas, Set/UpdateContext variables, Collect/ClearCollect collections, Navigate targets, component definitions and instances, App.OnStart and App.Formulas, and cross-references between them — so dead code, stale references, and pattern-based code-smell checks all work well. What can I check? ›

Example prompt
Find every Button control where the OnSelect property is empty, only whitespace,
the literal false, or just Select(Parent). For each hit, report the control's
name, the screen it's on, the source file, and the offending formula snippet.
Confidence should be high when OnSelect is empty/whitespace/false, and medium
when it is Select(Parent).
Manage keys ›