Как написать правила gnatcheck

Можно ли написать свои собственные правила gnatcheck, и если да, то может ли кто-нибудь указать мне хорошую ссылку? Я ищу определенный «стиль», который используется, и мне бы очень хотелось, чтобы я мог просто написать правило, которое говорит, что если вы видите указанный стиль, он выдаст предупреждение или ошибку, таким образом, мы можем отметить, когда это не следует определенному стандарту.


person onaclov2000    schedule 21.06.2011    source источник


Ответы (3)


Здесь может быть полезно немного предыстории. Несмотря на то, что проверки стиля многообещающи для обеспечения соблюдения рекомендаций по пользовательскому стилю, они предназначены не совсем для этого.

Основная цель этих проверок — обеспечить соблюдение стиля Ada Core (люди, которые поддерживают компилятор). в исходниках самого компилятора Ады. Вы можете заметить, что проверки автоматически включаются, если вы пытаетесь скомпилировать один из собственных исходных файлов компилятора.

На самом деле это вообще не служит целям AdaCore, если стили, применяемые самими проверками, настраиваются пользователем, поэтому они не добавили такой функции.

Ваш первый вариант, если вы хотите использовать его самостоятельно, — просто придерживаться стиля кодирования AdaCore. Я не находил это ужасным в прошлом, так что вы можете просто посмотреть на это.

Тем не менее, создание какой-то настраиваемости было бы действительно крутой функцией для кого-то. Если вы пойдете по этому пути, вам, вероятно, придется сделать его настраиваемым (с текущим поведением по умолчанию), а не просто изменить проверки. Причина в том, что для этого вам придется модифицировать исходные коды компилятора, и, как я упоминал выше, компилятор включает проверки при компиляции. Вы на самом деле не хотите переформатировать кучу работающих исходных файлов компилятора Gnat.

Я бы очень хотел, чтобы кто-нибудь сделал это в какой-то момент, так как это сделало бы проверки гораздо более полезными для тех из нас, кто работает на кого-то помимо AdaCore.

person T.E.D.    schedule 27.06.2011
comment
IMO, это плохой выбор, чтобы компилятор применял проверку стиля (в конце концов, стиль - это вопрос предпочтений); лучшим вариантом было бы, чтобы компилятор мог считывать некоторый допустимый код и переформатировать его в любом подходящем [указанном пользователем] стиле. - person Shark8; 01.07.2011
comment
@ Shark8 - я вижу, откуда ты. Проблема в том, что если кто-то хочет какой-то принудительный стиль (или, по крайней мере, предупреждения), то для всех, кроме самых тривиальных случаев, требуется определенный объем синтаксического анализа исходного кода. Компилятор, очевидно, хорошо подходит для этого, тогда как отдельной программе без доступа к кодовой базе компилятора предстоит много работы. - person T.E.D.; 05.07.2011
comment
Ну, если вы используете сам компилятор для переформатирования исходного кода в какой-то стандартный стиль, то аргумент «отдельная программа» основан на недопустимом предположении. - person Shark8; 08.07.2011
comment
@ТЕД. - Есть ли упоминания о домашнем стиле AdaCore где-нибудь в публичном пространстве? - person JasonFruit; 13.07.2011

В дополнение к ссылке на trashgod, я думаю, что раздел 7.1 этого PDF-файла может быть полезен:

http://extranet.eu.adacore.com/articles/HighIntegrityAda.pdf

person Shark8    schedule 22.06.2011
comment
Ах, GNATcheck является частью GNAT Pro. - person trashgod; 22.06.2011
comment
Также является частью GNAT GPL 2011. Я нашел RM в дистрибутиве по адресу share/doc/gnat/pdf/gnatcheck_rm.pdf. Сильное впечатление, что вы можете изменить только те правила, которые проверяются, поэтому, если -gnaty не поддерживает вашу проверку, вам не повезет. Поможет ли АдаКонтроль? (adalog.fr/adacontrol2.htm) - person Simon Wright; 24.06.2011
comment
И GNAT GPL 2010 и 2009, по крайней мере. - person JasonFruit; 09.07.2011
comment
@JasonFruit - я только что прочитал вашу статью «Мои два языка» и должен сказать, что она довольно хороша. - person Shark8; 12.07.2011
comment
@ Shark8 --- Спасибо! Приятно знать, что кто-то читает время от времени! - person JasonFruit; 12.07.2011