The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Открытый, расширяемый инструмент проверки правил кодирования может стать частью GCC.

28.05.2008 23:51

Разработчики, задействованные в проекте GlobalGCC представят на саммите разработчиков GCC 2008 открытый расширяемый инструмент автоматической проверки правил кодирования C++ для GCC и надеются что он войдет в основную ветку GCC и будет расширен и на остальные языки. Проект особенно интересен тем что в отличие от известных коммерческих аналогов (Parasoft, Klocwork, Coverity), его можно адаптировать под собственные правила кодирования.

Модифицированный предоставленными патчами компилятор GCC строит по программе базу знаний в виде Пролог-утверждений и затем программа на Прологе производит валидацию стиля кодирования в соответствии с правилами. В настоящий момент на Прологе реализована часть правил HICPP (High-Integrity C++), реализуются остальные правила стандарта правил кодирования и ведутся работы над созданием специализированного языка описания правил кодирования CRISP (Coding Rules In Sugared Prolog).

В ходе тестирования были проанализированы проекты Bacula, CLAM, Firebird, IT++, OGRE, Orca, Qt. Результаты тестирования показали очень высокую скорость работы инструмента на распространенных ПК (единицы секунд тестирования сотен тысяч строк кода) и хорошую повторимость результатов.

GlobalGCC это международный консорциум, созданный в рамках программы ITEA (Информационная технология для прогресса Европы), чтобы добавить в GCC функции:

  • Статическую проверку кода, направленную на выявление неявных ошибок (например, если функция f() вызывается из g(), которая в свою очередь вызывается из h(x) с параметром "x" больше нуля, тогда можно предположить о наличии в 345 строке файла foo.c возможности деления на ноль).
  • Проверку правил кодирования
  • Глобальную оптимизацию


  1. Главная ссылка к новости (http://lwn.net/Articles/284112...)
  2. Coding Rule Checking
  3. Automatic Coding Rule Conformance Checking Using Logic Programming
  4. инструкция по установке (на английском)
  5. High-Integrity C++ (HICPP)
  6. OpenNews: Стартовал проект GlobalGCC
Автор новости: zyx
Тип: Интересно / К сведению
Короткая ссылка: https://opennet.ru/16153-gcc
Ключевые слова: gcc, debug, code
Поддержать дальнейшую публикацию новостей на OpenNET.


Обсуждение (21) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 00:57, 29/05/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Блин, крууть! Даже денег бы им дал чтобы продолжали это развивать...
     
     
  • 2.3, Аноним (-), 01:28, 29/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Блин, крууть! Даже денег бы им дал чтобы продолжали это развивать...

    и в чём проблема ? http://www.ggcc.info/?q=contact :)

     

  • 1.2, MiG (?), 01:23, 29/05/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот если бы создали инструмент написания кода в хорошем стиле... :)
     
     
  • 2.5, Аноним (5), 02:50, 29/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Use Python babe !:-)
     
     
  • 3.15, MiG (?), 19:24, 29/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Use Python babe !:-)

    Python? А какое он имеет отношение к программированию? ;-)

     
  • 2.10, vitek (??), 12:34, 29/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    > Вот если бы создали инструмент написания кода в хорошем стиле... :)

    таких программистов не бывает. :-)
    это фантастика.

     

  • 1.7, pavlinux (ok), 03:39, 29/05/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Тогда можно предположить о наличии в 345 строке файла foo.c возможности деления на ноль

    Товарищ ZYX поясни... или дай посмотреть где это в оригинале!?

     
     
  • 2.8, pavlinux (ok), 04:19, 29/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
                                                         Сам не выкуришь, другие отнимут.

    ---------------------------------

    h(x, g(f())), x > 0

    1. B функции h(x) имеется операция есть деление, и G возвражает 0, а она должна возвращать 0,
        иначе h(x) постоянно и независимо от других выдавала бы devide by zero,
        следственно там есть выражение N(x)/g(x), N(x) - это внутренние функции с участием x,
        положительность или отрицательность x тут пофиг, а если x/G - тем более.

    2. Существуют выражения вида  N()/(x - g()) и N/(g(x) - x), при условии что |g()| = |x|


    3. Далее, G бывает 0-ой, в трёх случаях:
         a) когда f() = g(), и внутри g() есть сложение, (напомню разность a - b = a + (-b) || -a + b )
         b) f() - так же возвращает 0, и тогда внутри G есть деление K()/f() = G
         c) и сама G постоянно 0-вая (но это бред и надо к доктору)
         В общем полная аналогия с предыдущей - h().

    4. f() должна быть:

        a) f() = 0,
        b) f() = g()


    У меня получился такой вывод, что функция g() просто лишняя, и её действия ни чего не меняют.

     
     
  • 3.21, klalafuda (?), 00:43, 30/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >        Сам не выкуришь,
    >другие отнимут.
    >
    >---------------------------------
    >

    ммм.. то, что под чёрточками - это программа юзкейса на прологе :-?

    // wbr

     
     
  • 4.23, pavlinux (ok), 01:04, 30/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >ммм.. то, что под чёрточками - это программа юзкейса на прологе :-?

    Да нет, МатАнал 1-й курс. :)

     

  • 1.9, Светочка (?), 12:10, 29/05/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Лучше бы навели порядок в исходниках gcc и перевели его с autotools на нормальную систему сборки, чтобы под windows нормально без бубна собирался.
     
     
  • 2.11, vitek (??), 13:20, 29/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    вот когда появиться продукт GNU/Windows, тогда и бубны отменят.
    Столлман так сказал.
     
  • 2.12, Аноним (5), 13:22, 29/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Лучше бы навели порядок в исходниках gcc и перевели его с autotools
    >на нормальную систему сборки, чтобы под windows нормально без бубна собирался.
    >

    какая ты блин умная, лучше бы то сделали, лучше бы то.. Поди и сделай, не надо указывать людям которые чем-то занимаются в отличие от тебя, как им жить...

     
  • 2.13, Tred (?), 13:40, 29/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Windows == Posix?
    Какога < х > разработчики должны напрягаться?

     
  • 2.14, Kuraisu (?), 14:52, 29/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Если честно, на мой взгляд, autotools'ы - отличная система сборки. Очень гибкая и удобная. В своих проектах я использую именно её, и не вижу причин уходить от этого.
    Она даже в освоении очень проста, нужно лишь попробовать. ;)
     
     
  • 3.16, Светочка (?), 20:20, 29/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Autotools = MUST DIE!!! Они медленные, часто скрипт весит больше самой программы, ужасно работают под Windows (пусть у Windows много недостатков, но многие ей пользуются), при этом сама программа может не использовать платформенно-зависимые API и, соответственно, нормально работать и в Linux, и в Windows, но из-за automustdie компиляция программы под Windows может стать кошмаром. Чем не подходит cmake или scons в качестве замены - не знаю? Вполне нормальные современные системы сборки. Может быть их не используют из-за их объектно-ориентированности (ведь настоящие программы пишут только на C, bash и m4 :] )? Или из-за того, что какой-нибудь пользователь соберет их под так многими нелюбимом Windows? Как же так, то возможно бы он GNU/Linux поставил, а тут так и будет пользоваться проприетарщиной.
     
  • 2.17, pavlinux (ok), 21:14, 29/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    У Светочки одна пробма - autotools в каждом коменте пишет. =)
     
     
  • 3.19, vitek (??), 22:35, 29/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    а мужики то клюют! :-)
     

  • 1.18, phpcoder (??), 21:58, 29/05/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хорошая новость. Спасибо!


     
  • 1.20, eee (ok), 22:48, 29/05/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    На prolog кто-нибудь пишет?
     
     
  • 2.22, pavlinux (ok), 01:03, 30/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >На prolog кто-нибудь пишет?

    Ага, ядро Linux портируем на Visal Mono Sharp Prolog++ .NEту#


     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:
    При перепечатке указание ссылки на opennet.ru обязательно



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру