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); 
  ....
}

According to Common Weakness Enumeration, potential errors found by using this diagnostic are classified as CWE-683.

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


Bugs Found

Checked Projects
336
Collected Errors
12 743