Class declared as "Not ProcedureBlock"
objectscriptQuality release 
        Id 
        OS0036
      Rule type 
        Vulnerability
      Severity 
        Blocker
Blocker
      SQALE characteristic 
        - Security- Security compliance
 
Remediation function 
        Constant/issue
      Remediation cost 
        1d
      Usage of Not ProcedureBlock in class modifiers is, confusing (at best) and dangerous (always). Consider those two classes running in the same process:
    // Class C1
    Class C1 [ Not ProcedureBlock ]
    {
    ClassMethod m()
    {
        set x = "world"
    }
    }
    // Class C2
    Class C2 [ Not ProcedureBlock ]
    {
    ClassMethod m()
    {
        do ##class(C1).m()
        w "hello ", x, "!", !
    }
    }
Running method m of class C2 will yield:
    hello world!
This means that any variable set in any class defined as Not ProcedureBlock will be visible to any other such class.
This is a very dangerous feature. It is very strongly recommended that the code be refactored so as to avoid using this feature altogether. One such way would be, for example, to use globals instead.

