Project WatchfulAnvil DeveloperExchange - rpapub/WatchfulAnvil GitHub Wiki

Developer Exchange

Important

LLMs can generate code, but they canโ€™t validate it. Vibe-coded workflows need deterministic, explainable, and enforceable static analysis to ensure quality, safety, and governance. Watchful Anvil delivers exactly that.

Why Vibe-Coded Code Still Needs Static Code Analysis โ†’

More motivation for this project

  • shift left: balance the needs of developers and governance

    Dev and Gov

  • transfer from other static code analysis tools into LowCode
  • education and shining example
  • after test-driven-development my next logical step is static code analysis:

Ready for contributions

Fork the repository and receive:

  • monorepo with scripts, build pipelines, and documentation (v1.0)
  • created with the rule developer in mind

Contributions or in-house fork: Suited for annual targets.

Product project management

WatchfulAnvil, like a UiPath Studio library, contributing to RPA Development and Operations, is best pictured having its own lifecycle.

RPA DevOps and WatchfulAnvil

GitHub front and center, with:

Notable findings

Overcoming the sparse documentation:

  • Development How to Explore the UiPath Activities Api SDK using Visual Studio

  • Rule code to log avtivities into a file
    19:13:19 | RootContainer: Main
    19:13:19 | ActivityRule: Multiple Assign
    19:13:19 | ActivityTap: DisplayName=Ignored Activities, Type=ActivityModel, Children=1, Vars=0, Props=2, Args=0, Toolbox=Sequence,   SupportsRefs=False, HasId=True, Annotation=, UiPathActivityTypeId=
    19:13:19 | ActivityTap: DisplayName=Assign, Type=ActivityModel, Children=0, Vars=0, Props=2, Args=2, Toolbox=Assign, SupportsRefs=False, HasId=True,   Annotation=, UiPathActivityTypeId=
    19:13:19 | ActivityPropertyExpr: DisplayName=DisplayName, Expression=Process\Process.xaml - Invoke Workflow File
    19:13:19 | ActivityTap: DisplayName=Teardown, Type=ActivityModel, Children=1, Vars=0, Props=2, Args=0, Toolbox=Sequence, SupportsRefs=False,   HasId=True, Annotation=, UiPathActivityTypeId=
    19:13:19 | ParentActivity: Sequence
    19:13:19 | InvalidArgumentName: Name=result, Type=OutArgument(njl:JObject), Reason=Must start with out_, Annotation=
    19:13:19 | RootContainer: Main
    19:13:19 | ParentActivity: Sequence
    19:13:19 | ActivityTap: DisplayName=If global variabl errorType, Type=IfElseModel, Children=2, Vars=0, Props=2, Args=1, Toolbox=If,   SupportsRefs=False, HasId=True, Annotation=, UiPathActivityTypeId=
    19:13:19 | ActivityTap: DisplayName=Then, Type=ActivityModel, Children=1, Vars=0, Props=2, Args=0, Toolbox=Sequence, SupportsRefs=False, HasId=True,   Annotation=, UiPathActivityTypeId=
    19:13:19 | ActivityTap: DisplayName=Multiple Assign, Type=ActivityModel, Children=3, Vars=0, Props=2, Args=0, Toolbox=MultipleAssign,   SupportsRefs=False, HasId=True, Annotation=, UiPathActivityTypeId=
    19:13:19 | ActivityTap: DisplayName=, Type=ActivityModel, Children=0, Vars=0, Props=2, Args=2, Toolbox=AssignOperation, SupportsRefs=False,   HasId=True, Annotation=, UiPathActivityTypeId=
    19:13:19 | ActivityArguments: 
    19:13:19 | ActivityArguments: Names=[Out:To variable, In:Set value] | Details=[Out:To variable:0, Culture=neutral, PublicKeyToken=null; In:Set   value:0, Culture=neutral, PublicKeyToken=null]
    19:13:19 | ActivityPropertyExpr: DisplayName=Id, Expression=InvokeWorkflowFile_1
    19:13:19 | ActivityArguments: 
    19:13:19 | RootContainer: Main
  • XAML parsing and annotations

    • provide metadata about the workflow: Die the developer intend tis workflow to be a unit, a module, or something else?
    • in my personal styleguide units-of-work have a argument guideline that differs from modules, and the rule can check for that
  • project.json deserialization

    • provide access to outputType, name and dependencies
  • advanced build scripts:

    • dynamically add "developer dependencies" to project.json

This repo, ready to fork, makes any reverse engineering of low-resolution YouTube videos unnecessary.

Social Media

Follow or connect with me linkedin.com/in/cprima/

Next Steps

You want to participate? Great! Fork, build, raise issues, and contribute!

You have an opinion or question? Open a GitHub Discussion or comment on existing one.

Want to follow the project? Star the repository WatchfulAnvil, engage with the Issues or comment on LinkedIn posts.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ