Я очень новичок в ядре linux. Я хочу знать, насколько различны и разрешены инструменты для покрытия? Поскольку оба используются для анализа статического кода. Тогда как решить, какой инструмент лучше? Единственное различие, которое я знаю, это то, что: разреженный - с открытым исходным кодом, но для покрытия мы должны иметь лицензию на его использование.Насколько разреженный и скрытый инструмент для анализа статического кода отличается?
Есть ли какой-либо конкретный набор ошибок, которые можно проследить только по покрытию/разреженности?
Вот фрагмент кода, в котором Coverity сообщает вопрос, однако разреженные не:
foo(){
int x;
scanf("%d", &x);
switch(x){
case 1: printf("CASE 1");
case 2: printf("CASE 2");
break;
default:
}
}
В выше заданном примере; Покрытие будет сообщать о предупреждении отсутствия break заявление в case 1. Но, разреженный нет?
Однако оба инструмента используются для статического анализа кода программного обеспечения. Пожалуйста, поделитесь любой документацией, в которой можно выделить плюсы и минусы обоих инструментов.
Я не уверен, что это хороший вопрос. Различия, о которых вы спрашиваете, основаны на мнениях (а не черно-белых или, по крайней мере, очень ясных). Это просто предупреждение о статическом инструменте. Может быть, у Coverity есть другая, более ограничительная, политика по этому вопросу? Может быть, Sparse еще не реализовал эту функцию? Также плюсы и минусы, а также поведение, вероятно, подвержены изменениям в не столь отдаленной функции. Я боюсь, что любые ответы будут устаревшими в течение 6 месяцев. – luk32