Есть ли какой-нибудь сценарий оболочки и/или анализатор статического кода Makefile?

Или как я могу обеспечить надежность моих Makefiles/scripts?

Обновление: под сценариями оболочки я подразумеваю диалект sh (bash, zsh, что угодно), под файлами Makefile я подразумеваю GNU make. Я знаю, они разные звери, но у них много общего.

P. S. Да, я знаю, что статический анализ кода не может проверить все возможные случаи, и что мне нужно написать мои Makefiles и сценарий оболочки таким образом, чтобы они были надежными. Мне просто нужен инструмент, который подскажет, когда я использую плохие практики, когда я забыл о них или не заметил в большом сценарии. Не исправлять ошибки для меня, а просто посмотреть еще раз.


person evgeniuz    schedule 15.05.2012    source источник
comment
Статический анализатор кода не скажет вам, является ли ваш код надежным. Надежность достигается за счет автоматического и/или ручного тестирования. Что ты пытаешься сделать? Вы имеете в виду что-то вроде программ в стиле pylint, которые проверяют читабельность?   -  person l0b0    schedule 15.05.2012
comment
Проверка на надежность? [Это похоже на проверку качества] Я не думаю, что таким образом можно добиться надежности. Вы получаете надежность, разрабатывая свое приложение (C# или makefile) для правильной работы с хорошими входными данными в различных ожидаемых обстоятельствах и разумными проверками работоспособности входных данных. То, на что OP надеется, ИМХО, - это инструмент, который сообщает ему, что его make / scripts не сработают при различных распространенных обстоятельствах, чтобы он мог решить эти проблемы.   -  person Ira Baxter    schedule 15.05.2012
comment
Shark: На самом деле это два очень разных вопроса, поскольку языки сценариев и make-файлы имеют совершенно разный синтаксис и совершенно разную семантику. Оба имеют сложные проблемы с разбором, поскольку замены макросов/строк, как правило, встречаются повсюду в сложных сценариях; если инструмент анализа не сможет повторить все это, ему будет трудно понять, что было сказано, не говоря уже о том, сказано ли это неправильно.   -  person Ira Baxter    schedule 15.05.2012
comment
Shark: Я думаю, вам нужно четко понимать, какой язык сценариев (их миллион) и какой диалект make. (GNU? классический unix? MS nmake? ....)   -  person Ira Baxter    schedule 15.05.2012
comment
@IraBaxter немного обновил вопрос. они разные, но имеют много общего, поэтому я бы оставил это как один вопрос, я считаю, что это правильно. Если модераторы хотят, они могут разделить это на два вопроса.   -  person evgeniuz    schedule 15.05.2012
comment
Вопрос SH уже здесь: stackoverflow.com/questions/3668665/   -  person user123444555621    schedule 15.05.2012
comment
Модераторы не собираются делать ничего; только ты будешь. Я думаю, вы серьезно не понимаете, насколько язык сценариев отличается от make-файлов; у них совершенно разная семантика исполнения.   -  person Ira Baxter    schedule 15.05.2012


Ответы (1)


Для сценариев sh ShellCheck выполнит некоторые проверки статического анализа, например, определит, когда изменения переменных скрыты подоболочек, когда вы случайно используете [ $foo=bar ] или когда вы не заключаете в кавычки переменные, которые могут содержать пробелы. Он также комментирует некоторые стилистические проблемы, такие как бесполезное использование cat или использование sed вместо расширения параметра.

person that other guy    schedule 21.12.2012