Другой подход к внесению изменений в исходный код C с помощью python?

Мне было поручено создать скрипт (на Python), который отключит функцию в нашем исходном коде. Код генерируется с помощью стороннего программного обеспечения для настройки, с помощью которого графический интерфейс позволяет изменять настройки для отключения этой функции. Эти изменения требуют усилий и времени для создания, отсюда и сценарий. Теоретически в заголовочных файлах есть куча флагов (например, #define thisFeature STD_ON), ​​которые я могу легко перевернуть с помощью скрипта.

Более сложная часть - это изменения в исходных файлах, для которых некоторые функции добавляются/удаляются сторонним программным обеспечением для настройки. Они могут измениться в будущем, поэтому мне нужно подумать о решении, которое останется пригодным для использования. Я не могу изменить код для стороннего приложения, так как мне нужно избежать процесса генерации, который требует времени. Мне нужно внести изменения, чтобы при сборке продукта необходимые изменения были внесены и скомпилированы. Любые предложения были бы замечательными.


person fordGuy112    schedule 04.03.2020    source источник
comment
Я не уверен, что именно вы собираетесь здесь. Я думаю, что было бы очень полезно включить примеры.   -  person Reedinationer    schedule 04.03.2020


Ответы (1)


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

В любом случае, когда вам понадобится обновление поставляемого компонента, у вас возникнет гораздо больше проблем, чем при использовании того, что поставляется.

Так что я боюсь, что ответ: «Нет». (то есть без альтернативы).
Вы можете делать предположения о своей системе и создавать что-то, что в рамках этих предположений достигает вашей цели в краткосрочной перспективе.
Но в долгосрочной перспективе тот, кто решил использовать AUTOSAR в вашем проекте, сделал это по причинам, которые потерпите неудачу, когда вы обойдете официальный генератор.
Итак, рано или поздно усилия, которые вы тратите сейчас, будут потеряны и могут в конечном итоге причинить больше вреда, чем выгоды, которые вы могли бы получить в краткосрочной перспективе.

person Yunnosch    schedule 04.03.2020
comment
да, примерно так я и предполагал. Спасибо. Я думаю, что мы будем вносить некоторые хорошо задокументированные краткосрочные изменения, которые вызовут ошибки, если будут внесены какие-либо изменения в то, что необходимо изменить. - person fordGuy112; 04.03.2020
comment
Это кажется разумным решением проблемы возможной ошибки при обновлении. Подумайте о том, чтобы сделать свой собственный ответ с этой концепцией. - person Yunnosch; 04.03.2020
comment
Обратите внимание, мы рассмотрели альтернативу, заключающуюся в архивировании сгенерированных файлов и их повторном использовании до тех пор, пока входные файлы (конфигурация, SWCD, генераторы, ...) не изменятся. Однако мы этого не сделали, потому что наш анализ указывал на более серьезные потенциальные ошибки и более сложную отладку, если мы когда-либо получим несогласованность входных файлов и архивных сгенерированных файлов. Наш баланс риска/усилий/скорости указывал на то, чтобы всегда генерировать, а не архивировать. Я не считаю эту часть ответа, потому что убежден в нашем решении. Но решил упомянуть об этом здесь. - person Yunnosch; 04.03.2020
comment
Инструменты, которые мы используем для AUTOSAR, каким-то образом поддерживают рабочие процессы и сценарии для автоматизации задач и даже позволяют выполнять это из командной строки. Возможно, гораздо проще включить/отключить функции для каждого сценария в файлах ARXML/config, а затем повторно сгенерировать и скомпилировать из командной строки, например. по сборке системы CI. - person kesselhaus; 06.03.2020
comment
@kesselhaus Это верно, и обычно верно для всех наборов инструментов (хотя некоторые оказывают некоторое сопротивление). Однако дело в том, что независимо от того, как вы вносите изменения (из графического интерфейса или через скрипт или просто используя разные версии входных файлов), последующая генерация всегда необходима. Продолжительность этого поколения является проблемой. - person Yunnosch; 06.03.2020
comment
@Yunnosch Моя точка зрения такова: а) если они начнут с такого сценария, он будет длиться вечно, и настоящая проблема никогда не будет решена. б) вы можете потерять какую-либо квалификацию, особенно в отношении ASIL, от вашего поставщика. c) правильная система сборки CI (ферма) может не иметь проблем с регенерацией и сборкой. г) многие проблемы обычно связаны с непониманием концепций и функций AUTOSAR. --- К сожалению, более подробной информации о своей проблеме он не сообщил. - person kesselhaus; 07.03.2020
comment
@kesselhaus Однако вы понимаете, что аргументируете то, что я написал, не так ли? Однако, если вы не возражаете, я учту ваш вклад в свой ответ (конечно, отдавая вам должное). - person Yunnosch; 07.03.2020