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

Анализатор обнаружил подозрительную передачу аргументов в метод. Возможно некоторые аргументы перепутаны местами.

Пример подозрительного кода:

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

Во время задания цвета объекта, перепутали синий и зелёный цвет.

Исправленный вариант кода должен выглядеть следующим образом:

    SetARGB(A, R, G, B);

Рассмотри более сложный пример опечатки из реального проекта:

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

Согласно логике, можем предположить, что код должен выглядеть следующим образом:

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

Данная диагностика классифицируется как:

CWE-683

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V3066.