The OpenNET Project / Index page

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

Обзор возможностей CLang по выявлению ошибок в программах

06.04.2010 19:33

В статье "Amazing feats of Clang Error Recovery" представлены примеры расширенных возможностей CLang (совместимый с GCC фронтэнд к LLVM для языков C/C++) по выявлению ошибок в программах на этапе компиляции. Например, при опечатке в имени переменной clang не просто напишет, что такая переменная не определена, а выявит факт опечатки и предложит правильный вариант. Также отмечены возможности по разрешению конфликтов, выявлению некорректного использования разных типов данных и объектов, использованию при вызове методов символа "." вместо "->" и оператора ":" вместо "::".

  1. Главная ссылка к новости (http://blog.llvm.org/2010/04/a...)
  2. OpenNews: Компилятор Clang преодолел барьер собственной пересборки
  3. OpenNews: Новая версия набора компиляторов LLVM Compiler 2.6
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/26116-CLang
Ключевые слова: CLang, error, debug
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (12) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Aesthetus Animus (ok), 21:33, 06/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Не считаю, что это на самом деле надо.
     
     
  • 2.2, Below (ok), 22:09, 06/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Почему?
     

  • 1.3, Аноним (-), 22:32, 06/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ух! а gcc так умеет?
     
     
  • 2.4, мимопроходил (?), 22:40, 06/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    по ссылке сходить примеры посмотреть никак?
     
  • 2.6, Damon (??), 22:47, 06/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > ух! а gcc так умеет?

    Что именно? Выявлять ошибки и ругаться? Да умеет.
    Вообще, смысл статьи не в том, что llvm, что-то выявляет, а gcc нет (и тот и другой выпадают с ошибкой), а в том, что (по мнению автора) llvm дает внятное пояснение, где конкретно ошибка, а gcc утверждает, что ошибка "где-то рядом" (почти (С)).
    Пример:



    $ cat t.c
    struct foo { int x; }

    typedef int bar;
    $ clang t.c
    t.c:1:22: error: expected ';' after struct
    struct foo { int x; }
                         ^
                         ;
    $ gcc t.c
    t.c:3: error: two or more data types in declaration specifiers
    [\code]

     
     
  • 3.7, Damon (??), 22:51, 06/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Вообще, смысл статьи не в том, что llvm, что-то выявляет, а gcc

    Тьфу, не llvm, а Clang ессно. Очепятался...

     

  • 1.5, мимопроходил (?), 22:41, 06/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Весч конечно полезная, если нет IDE
     
     
  • 2.8, Ян Злобин (ok), 04:15, 07/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Весч конечно полезная, если нет IDE

    А какие IDE это умеют?  У меня, например, Анюта просто показывает то, что говорит GCC.

     
     
  • 3.10, мимпроходил (?), 12:47, 07/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    я имел в виду что обычно ошибки синтаксиса/несовпадения имен переменных IDE подсвечивает - например NetBeans C/C++ это точно умел, крайнее время на C/C++ одни нетривиальные задачи которые пишу в vim.
     
     
  • 4.13, Аноним (-), 19:09, 13/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    QtCreator, Code::Blocks, Codelite etc это тоже умеют :).
     

  • 1.9, dq0s4y71 (??), 12:30, 07/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ребята изобрели lint?
     
  • 1.11, Аноним (-), 13:53, 07/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    С IDE или без, это точно очень полезные фичи! Мне эти "нехватает =" ну никак не помогают! А уж исправлять опечатки - тем более классно (мало ль, где я исходник правил).
    Вот ещё бы D к llvm прикрутили, я б ваще помер от оргазма! :)
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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