# V3066. Possible incorrect order of arguments passed to method.

The analyzer detected a suspicious sequence of arguments passed to a method. Perhaps, some arguments are misplaced.

An example of suspicious code:

    void SetARGB(byte a, byte r, byte g, byte b)
    { .... }
    void Foo(){
      byte A = 0, R = 0, G = 0, B = 0;
      ....
      SetARGB(A, R, B, G);
      ....
    }

When defining the object color, the programmer accidentally swapped the blue and green color parameters.

The fixed version of the code should look like this:

    SetARGB(A, R, G, B);

Here's an example from a real project:

    public virtual string Qualify(string catalog,
                                  string schema,
                                  string table)
    { .... }
    public Table AddDenormalizedTable(....) {
      string key = subselect ??
        dialect.Qualify(schema, catalog, name);
      ....
    }

As logic suggests, the code should actually look like this:

    public Table AddDenormalizedTable(....) {
      string key = subselect ??
        dialect.Qualify(catalog, schema, name);
      ....
    }

This diagnostic is classified as:

CWE-683

You can look at examples of errors detected by the V3066 diagnostic.