Вопросы по теме 'misra'
Оценка аргумента тернарного оператора в C
Я работал с некоторым кодом, чтобы обеспечить соответствие MISRA. Проблема с этим фрагментом кода:
Operands shall not be of an inappropriate essential type. The operand of the ? operator is of an inappropriate essential type category unsigned....
353 просмотров
schedule
15.09.2021
Как я могу привести свой код в соответствие с MISRA 2012 RULE 8.4
Я добавил эту строку в свой код c
uint64_t *ab_cd; //Line 1
Выдает ошибку, указывающую, что «внешний символ 'ab_cd' определен без предварительного объявления».
ПРАВИЛО 8.4 гласит, что «Совместимое объявление должно быть видимым, когда...
117 просмотров
schedule
28.11.2021
преобразование между указателем на функцию и другим типом [MISRA 2012, правило 11.1, обязательно] | pclint 9074
Я использую массив указателей на функции, как показано ниже, чтобы избежать использования оператора switch в коде.
void E_func1(void);
void E_func2(void);
void E_func3(void);
void (*pfGetVal[3])() = {
E_func1,
E_func2,
E_func3...
154 просмотров
schedule
06.09.2021
Скрытие информации структуры C (непрозрачный указатель)
В настоящее время я немного запутался в концепции сокрытия информации в C-структурах.
Фоном этого вопроса является встроенный проект c с почти нулевым знанием ООП.
До сих пор я всегда объявлял свои структуры typedef внутри файла заголовка...
486 просмотров
schedule
21.05.2022
Совместимое с MISRA обнаружение порядка следования байтов во время выполнения
(Во-первых, обратите внимание, что я знаю, что определение порядков байтов во время выполнения не является идеальным решением, и есть лучшие идеи. Пожалуйста, не поднимайте этот вопрос)
Мне нужно проверить порядок байтов моего процессора во время...
215 просмотров
schedule
09.06.2022
Почему в пределах одной точки следования должно быть не более одного доступа на чтение с типом volatile-qualified?
Учитывая следующий код:
static volatile float32_t tst_mtr_dutycycle;
static volatile uint8_t tst_mtr_direction;
static volatile uint32_t tst_mtr_update;
void TST_MTR_Task(void)
{
if (tst_mtr_update == 1U)
{
tst_mtr_update = 0;...
861 просмотров
schedule
18.06.2022
Как указать символьный литерал, соответствующий MISRA C ++?
Я организую правила Klocwork и устраняю любые проблемы, обнаруженные статическим анализом. Применяется несколько правил, и в настоящее время у меня проблема с указанием символьных литералов. Рассмотрим этот пример:
for (const char* p = str; *p...
386 просмотров
schedule
25.06.2022
Обоснование правил комментариев в MISRA
Правило 2.2 в MISRA гласит, что «исходный код должен использовать только комментарии в стиле /* ... */ ». Кто-нибудь знает, в чем причина этого правила? что не так с комментариями в стиле // ?
4287 просмотров
schedule
04.07.2022
Могу ли я отключить эти два правила MISRA: один оператор для каждой функции и обязательные прототипы функций?
Наша компания теперь соответствует стандарту ISO-13485 (медицинские приборы) и хочет использовать MISRAC2012. Я прочитал стандарт, но не могу понять, разрешено ли мне отключать некоторые правила, если я думаю, что это может улучшить как стабильность,...
1120 просмотров
schedule
09.08.2022
Инициализация массивов символов и ошибки MISRA
У меня есть следующая строка (сокращенная до минимальной демонстрации проблемы):
char version_text[64U] = {'\0'};
Эта строка генерирует следующую ошибку MISRA:
Error[Pm023]: missing elements - braces shall be used to indicate and match...
2368 просмотров
schedule
16.10.2022
Запретить сообщение 9007 lint
Согласно правилу 13.5 MISRA правый операнд логического && или || оператор не должен содержать стойких побочных эффектов. Наш код проверен с помощью PC-Lint, сообщение 9007 ( http://gimpel-online.com/MsgRef.html#9007 ).
У нас есть код вида...
540 просмотров
schedule
15.10.2022
Шаблон статической функции и MISRA C++
Следующий шаблон функции со специализациями должен использоваться только в одном файле .cpp , поэтому я хотел бы сделать его static . Следующий код компилируется (без предупреждений) с использованием как MS Visual C++ 2008, так и GCC 4.8.1 и...
1195 просмотров
schedule
07.10.2022
ОШИБКА MISRA: тип поля должен быть int, unsigned int или signed int
Я использовал следующий код в своей программе, и при запуске PC-Lint он выдает следующую ошибку: несколько маркеров в этой строке - (lint: 46) тип поля должен быть int, unsigned int или signed int [MISRA 2004 Правило 6.4, обязательно] - (lint:960)...
2371 просмотров
schedule
17.01.2023
Говорит ли MISRA C 2012 не использовать bool
Я нахожусь на ранних стадиях создания материала для нового проекта.
Я определил функцию с возвращаемым типом "bool"
Я получил этот вывод от PC-Lint
Including file sockets.h (hdr)
bool sock_close(uint8_t socket_id);
^
"LINT: sockets.h...
4687 просмотров
schedule
10.02.2023
MISRA C++-2008 Правило 5-0-15. Индексация массива должна быть единственной формой арифметики указателей.
Мне нужен кто-то, у кого больше опыта работы с MISRA, чтобы помочь мне решить эту проблему. У меня есть следующий код:
byte* buf = new(std::nothrow) byte[bufferSize];
.....
for (uint32_t i = 0; i < bufferSize; i+=4)
{
.................
3018 просмотров
schedule
18.04.2023
Нарушение Misra с побитовым оператором
Я написал следующий фрагмент кода, который не нравится MISRA:
UartPtr->C &= ((uint8_t)(~SIO_C2_SBK));
с
#define SIO_C2_SBK ((uint8_t)0x01u)
и UartPtr определяется как
UartPtr = (UartStruct*) 0x12345678; /* I know that...
1136 просмотров
schedule
03.05.2023
Разница в стиле комментариев между C и C++
Есть ли разница между стилем комментирования между C( /*..*/ ) и C++( // )?
MISRA C говорит
Правило 2.2 (обязательно): Исходный код должен использовать только комментарии в стиле /* … */ .
MISRA C++ говорит
Правило 2.7.1...
3728 просмотров
schedule
20.11.2022
Как решить это предупреждение lint Неявное двоичное преобразование из int в unsigned int
вот код:
test.cpp
unsigned short x;
bool y;
if ((x==1)&& y)
{
...
}
else
{
...
}
Я получил сообщение lint:
Note 912 Implicit binary conversion from int
to unsigned int [MISRA Rule 48]
Почему? и как этого избежать?
779 просмотров
schedule
08.07.2023
Запрос относительно правила 11.6 Misra (MISRA C:2012)
Я не могу решить предупреждение о правиле 11.6 мисры в этой строке:
uint32_t * delay = (uint32_t *)0x40086D0C ;
[ К сведению: typedef long unsigned int uint32_t;]
PC-Lint: Примечание 923: преобразование из int в указатель [правило...
1606 просмотров
schedule
04.01.2023
Зачем нужны прототипы функций в MISRA:2012?
Мне интересно, почему MISRA: 2012 требует прототипы функций. В приведенном ниже примере два прототипа на самом деле не нужны.
#include <stdio.h>
#include <stdlib.h>
// >>> Truly useless in my opinion
void display(void);
int...
1577 просмотров
schedule
02.07.2023