при запуске Klocwork для моего проекта я получаю много предупреждений уровня 4, таких как: «Строка 178: индекс цикла« i », используемый в качестве индекса в строке 177 для вычисления« queue_id », который затем используется в качестве индекса внутри« для » на линии 175 «
код такой:
for (i = 0; i < nb_rx; i++)
{
queue_id = events[i].queue_id;
event_handler_id = queues_table[queue_id].event_handler;
handler_table[event_handler_id].receive_func(events[i], dev_id, port_id);//call event function to handle this event
}
в основном я вижу, что в цикле for я получаю результат «queue_id», читая из массива «events [i]», который индексируется с помощью «i», а затем я получаю другой результат «event_handler_id» читая из другого массива «queues_table [queue_id]», который проиндексирован с использованием предыдущего результата «queue_id», я получу это предупреждение.
код этого предупреждения Klocwork — «BP.DDL.SP1d», но я не могу найти более подробное объяснение этого.
но я обещаю, что это поведение (чтение из одного массива, а затем использовать этот результат для чтения из другого массива) именно то, что я хочу сделать. Для меня это звучит как правильная логика, поэтому я не знаю, почему Klocwork продолжает выдавать предупреждения для такого кода.
Кто-нибудь знает, в чем причина и как избежать получения предупреждения? уровень серьезности всего 4, так что это не критическая проблема, но я все еще хотел бы понять, почему.
большое спасибо.
Задача ещё не решена.
Других решений пока нет …