The OpenNET Project / Index page

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



"Выпуск cppcheck 2.7, статического анализатора кода для языков C++ и С"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск cppcheck 2.7, статического анализатора кода для языков C++ и С"  +/
Сообщение от opennews (??), 08-Фев-22, 16:20 
Вышла новая версия статического анализатора кода cppcheck 2.7, позволяющего выявлять различные классы ошибок в коде на языках Си и Си++,...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=56661

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 08-Фев-22, 16:20   –5 +/
а есть что-то подобное для раста? для выявления утечек памяти и всего такого -- в общем типичных проблем растокода
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #4, #6, #18, #25, #31, #81

3. Сообщение от Аноним (3), 08-Фев-22, 16:49   +/
Пользуются ли ей разработчики KDE?
Ответить | Правка | Наверх | Cообщить модератору

4. Сообщение от topin89 (ok), 08-Фев-22, 17:02   +4 +/
> для выявления утечек памяти и всего такого -- в общем типичных проблем растокода

А ты хорош!

Но если серьёзно, cppcheck -- это так себе решение в сравнении с каким-нибудь Coverity, тем анализатором с Хабра или даже clang-analyzer.

Линтеры есть, тот же clippy. Но я ненастоящий растоман, за качество инструментов ничего говорить не буду

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #15

6. Сообщение от Аноним (6), 08-Фев-22, 17:16   –2 +/
Я так и не смог найти каких-нибудь инструментов для раста. Память просто вытекает _куда-то_, исполнение просто зависает _почему-то_, но зато без проблем с кодом. Может быть стоит подождать и баги ллвм исправят, тогда то точно всё будет работать как надо.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #8

8. Сообщение от Аноним (6), 08-Фев-22, 17:28   +/
Ах да, ещё вечные проблемы с синхронизацией мультипотока в расте ударили с новой силой. Да я смотрю и жырнолисе косяки синхронизации табов полезли как вебрендер на расте впихнули, хотя, казалось бы, главный и единственный пользователь раста должен понимать, что к чему. Отсутствие инструментов для отладки делает ситуацию куда хуже чем с привычными проблемами плюсов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #10

9. Сообщение от Анонн (?), 08-Фев-22, 18:13   +3 +/
Отличный и крайне недооцененный проект. Жалко что им так мало пользуются.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #13, #19, #20

10. Сообщение от Анонн (?), 08-Фев-22, 18:15   +/
Ты наркоман что ли? Какое отношение веб-рендер имеет к синку табов?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #11

11. Сообщение от Аноним (6), 08-Фев-22, 18:36   –1 +/
Табы отваливаются из-за вебрендера, не иначе. Это проявляется как глюки отрисовки при попытке скроллить и глюки интерфейса, можно переключить на соседний таб в другом контентном процессе и там всё  нормально, он не теряется. Если бы можно было прибить контентный процесс я бы не жаловался, но при этом весь интерфейс перестаёт нормально работать и единственное решение это перезапуск. До вебрендера такого точно не было. Проявляется чаще всего когда таб возвращается из свопа.

А ещё периодически начинает жрать в 5 раз больше ресурсов, будто включился программный режим вебрендера, только хуже. Я настроил так, чтобы он не включался, можно сделать вывод, что раст игнорирует настройки.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

13. Сообщение от Аноним (15), 08-Фев-22, 19:30   +/
много кто пользуется
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9

15. Сообщение от Аноним (15), 08-Фев-22, 19:32   –1 +/
Отличный компактный инструмент

ковертли вообще монстр, да еще и платный, да еще и сложный в настройке

анализатор с хабра пора выбросит на помойку

кланг анализер не все находит что сабж, но для сильно подробных разборов полётов, кланг анализер показывает
весь контрол флов

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #22, #29

18. Сообщение от Alexey (??), 08-Фев-22, 20:06   –2 +/
На самом деле вопрос надо ставить не так. "Есть ли для C++ такие анализаторы, которые ищут проблемы с памятью так же хорошо как базовый синтакс Rust". И ответ - нет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #21, #24, #41

19. Сообщение от Alexey (??), 08-Фев-22, 20:07   +/
Сильно много ложных срабатываний.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9

20. Сообщение от Самокатофил (?), 08-Фев-22, 20:14   +2 +/
Отличный. Когда-то даже удивился, увидев его враппер в исходниках wireshark'a. Инструмент оцененный теми, кому надо. Вот бы еще разраб сделал нормальный ман, вместо этого генерируемого убожества... просто же, ну, или, если удобно так -- добавлять в дист сгенеренный ман, как принято у аристократии...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9

21. Сообщение от Самокатофил (?), 08-Фев-22, 20:23   +1 +/
https://nvd.nist.gov/vuln/detail/CVE-2018-1000810

https://nvd.nist.gov/vuln/detail/CVE-2021-28875

- Ну что, сынку, помог тебе твой раст?

P.S. Банально первые ссылки из гугла.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #23, #26, #78

22. Сообщение от Самокатофил (?), 08-Фев-22, 20:28   +2 +/
Да лан, надо отдать должное этим чувакам, они свой пивас затолкали даже интолу, вроде?!

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

23. Сообщение от Самокатофил (?), 08-Фев-22, 20:29   +/
https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=rust

Безопастност.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21 Ответы: #38

24. Сообщение от Аноним (24), 08-Фев-22, 21:19   –2 +/
> И ответ - нет.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

25. Сообщение от ЛОЛВАТ (?), 08-Фев-22, 21:26   –1 +/
в раст все работает из коробки
раст даже пишет код за тебя
неважно как и какой код написал раст программа будет работать так как ты задумал в голове. это не магия это раст.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #27

26. Сообщение от Alexey (??), 08-Фев-22, 21:26   +/
Дык давайте тогда с C++ и C сравним. Вот где безопасность должна быть. Все-таки 40 лет разработки.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21 Ответы: #28

27. Сообщение от Alexey (??), 08-Фев-22, 21:30   +/
Нет, по сути язык заставляет писать код, который проходит его внутренний линтер (в его случае линтер следить за владением объектов). Так что априори код безопаснее, чем C++, где компилится даже откровенно бредовый код, который должен просто быть синтаксически верным. Т.е. можете просто написать код, который в бесконечном цикле выделяет через new память и не освобождает. И вам для этого даже не надо писать хаки, фича доступна из коробки.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25 Ответы: #35, #39, #42

28. Сообщение от Самокатофил (?), 08-Фев-22, 21:38   +/
Но ведь "базовый синтаксис раст", май эс. ;)

Сравнивать с цэ? Пожалуйста. С цэпэпэ - пожалуйста. С цэ/цэпэпэ - вам не кажется что это неадекватно? :-D

Ну и положа руку на сердце, не думаете что тех CVE как-то слишком уж многовато для такого малоиспользуемого и маргинального языка? Ну, в сравнении с сишкой из 70х, и цэпэпэ, у которых петабайты исходного кода. Ммм?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26

29. Сообщение от Аноним (29), 08-Фев-22, 21:59   +/
У коверити есть бесплатный CI для свободных проектов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

30. Сообщение от Аноним (30), 08-Фев-22, 23:44   +1 +/
>> Добавлена поддержка представлений (view) контейнеров - в тег библиотеки добавлен атрибут view, указывающий, что класс является представлением. Код анализа времени жизни обновлён для использования данного атрибута при поиске "висячих" контейнеров;

Когда я изучал С++ там не было ни вью, ни контейнеров. Тем более висячих.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #33

31. Сообщение от Аноним (31), 08-Фев-22, 23:55   +/
В компилятор встроен - одна половина MIR, вторая половина в официальном крейте Miri https://github.com/rust-lang/miri#bugs-found-by-miri
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #32

32. Сообщение от Аноним (31), 09-Фев-22, 00:00   +/
Есть еще tsan https://github.com/tokio-rs/loom
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31

33. Сообщение от Аноним (33), 09-Фев-22, 02:20   +2 +/
Когда я изучал C++ не было ... так что и ну его нафиг
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30 Ответы: #48

34. Сообщение от . (?), 09-Фев-22, 03:46   +/
странные ощущения оставляет. как будто зря каждый раз жру кактус чтобы его настроить, а выдача как от модных варнингов гцц. (про си)
Ответить | Правка | Наверх | Cообщить модератору

35. Сообщение от Аноним (35), 09-Фев-22, 04:51   –1 +/
> Нет, по сути язык заставляет писать код,

Ты не уловил суть. Она намного глубже - извечная битва (не путать с клоунадой) против Расто-Зла!

Есть древняя легенда, сотканна в поэму,                                                  
Дошла до нас сквозь вереницы лет,                                                        
Как-то зайдя на Опеннет, Воен-за-Си увидел Расто-тему                                    
Там мерзкий Раст бесстыже был воспет!                                                    
Свой Боевой Пукан вперед направив,                                                      
Воен открыто пукнyл во Врага!                                                            
Но Растоман, не соблюдая честных правил                                                  
В ответ плеснул вонючим смузи сподтишка.                                                        
Воен едва, лишь чудом увернулся,                                                        
Ему по сути просто повезло ...                                                          
Вот с той поры Воены сражаются и срутся,                                                
И много тонн овна по форуму стекло.                                                      
Пусть кажется, что Воены побеждают,                                                      
Не будет скоро в мире Расто-Зла,                                                        
Но Растоманы, паскуды, никак не умирают,                                                
Что раскаляет Военов пуканчик до красна!


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

37. Сообщение от Анонимemail (37), 09-Фев-22, 07:12   +/
Описание к третьей ссылке поправьте. Во-первых, MIRSA - это не стиль оформления кода. Во-вторых, в cppcheck нет проверок стилей оформления кода.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #76, #77

38. Сообщение от Аноним (38), 09-Фев-22, 08:38   –1 +/
Вродебы раст позиционируется как штука которая исключит подобные ошибки.

CVE-2021-45715     An issue was discovered in the rusqlite crate 0.25.x before 0.25.4 and 0.26.x before 0.26.2 for Rust. create_window_function has a use-after-free.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #51

39. Сообщение от Аноним (38), 09-Фев-22, 08:40   +/
>который проходит его внутренний линтер (в его случае линтер следить за владением объектов).

Да что-то как-то не особо то и следит.


CVE-2021-45719     An issue was discovered in the rusqlite crate 0.25.x before 0.25.4 and 0.26.x before 0.26.2 for Rust. update_hook has a use-after-free.
CVE-2021-45718     An issue was discovered in the rusqlite crate 0.25.x before 0.25.4 and 0.26.x before 0.26.2 for Rust. rollback_hook has a use-after-free.
CVE-2021-45717     An issue was discovered in the rusqlite crate 0.25.x before 0.25.4 and 0.26.x before 0.26.2 for Rust. commit_hook has a use-after-free.
CVE-2021-45716     An issue was discovered in the rusqlite crate 0.25.x before 0.25.4 and 0.26.x before 0.26.2 for Rust. create_collation has a use-after-free.
CVE-2021-45715     An issue was discovered in the rusqlite crate 0.25.x before 0.25.4 and 0.26.x before 0.26.2 for Rust. create_window_function has a use-after-free.
CVE-2021-45714     An issue was discovered in the rusqlite crate 0.25.x before 0.25.4 and 0.26.x before 0.26.2 for Rust. create_aggregate_function has a use-after-free.
CVE-2021-45713     An issue was discovered in the rusqlite crate 0.25.x before 0.25.4 and 0.26.x before 0.26.2 for Rust. create_scalar_function has a use-after-free.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #44

41. Сообщение от Crazy Alex (ok), 09-Фев-22, 11:33   +/
Если для практики, а не меряться "кто круче" - то вообще тривиально. Банальная проверка на отсутствие сырых указателей как членов класса и создания умных указателей из сырых (а не с помощью make_unique()/make_shared()) и арифметики с указателями вне begin() и  end() вылечит 99% проблем. Остаётся ещё всякий bounds checking по вычисленным индексам - но это в прицнипе в компайл-тайме не ловится, а в рантайме адски дорого.

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

Другими словами - пишете код в рекомендованном современном плюсовом стиле, а не так, как привыкли до 11-го года - и нет проблем.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

42. Сообщение от Crazy Alex (ok), 09-Фев-22, 11:35   –1 +/
...а потом оказывается, что вы пишете программу для тестирования работы OOM киллера.

Что характерно - написать бесконечный цикл, тыпо выделяющий память (ну в виде создания объектов, например) можно вообюще на любом языке.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

43. Сообщение от InuYasha (??), 09-Фев-22, 11:38   +/
Что-то подсказывает мне, что donate-cpu.py имеет в зависимостях donate-bandwidth.py...
Ответить | Правка | Наверх | Cообщить модератору

44. Сообщение от Аноним (-), 09-Фев-22, 12:50   +/
>>который проходит его внутренний линтер (в его случае линтер следить за владением объектов).
> Да что-то как-то не особо то и следит.
> CVE-2021-45719  An issue was discovered in the rusqlite crate 0.25.x before
> 0.25.4 and 0.26.x before 0.26.2 for Rust. update_hook has a use-after-free.

https://github.com/rusqlite/rusqlite/pull/1049/commits/42605...

 +16,9 @@ unsafe extern "C" fn free_boxed_value<T>(p: *mut c_void) {
impl Connection {
...
> {

        unsafe extern "C" fn call_boxed_closure<C>(
            arg1: *mut c_void,


Какой громкий пук ...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39 Ответы: #45

45. Сообщение от Аноним (38), 09-Фев-22, 13:19   +/
Получается без unsafe ничего на Rust кроме Hello World не написать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44 Ответы: #50

48. Сообщение от Аноним (48), 09-Фев-22, 13:57   +/
Когда Я изучал, С++ еще не было..
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33 Ответы: #74

50. Сообщение от Аноним (50), 09-Фев-22, 15:05   –1 +/
> Получается без unsafe ничего на Rust кроме Hello World не написать.

Получается, если из раста коснуться внешнего г.вна, написанного на си - всё превращается в г.вно. Си - этакий современный царь Мидас, только чаще превращает не в золото. А не взаимодействовать с уже написанными петабайами сишного г.вна не всегда получается - даже ядро линукса на нем написано. Но это не на долго, работы в этом направлении начаты...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45 Ответы: #52, #54

51. Сообщение от Самокатофил (?), 09-Фев-22, 15:12   +/
> Вродебы раст позиционируется как штука которая исключит подобные ошибки.
> CVE-2021-45715  An issue was discovered in the rusqlite crate 0.25.x before
> 0.25.4 and 0.26.x before 0.26.2 for Rust. create_window_function has a use-after-free.

Пропаганда. Смотри:

https://github.com/jeromefroe/lru-rs/pull/121

Уязвимость тянется отсюда:

https://github.com/jeromefroe/lru-rs/issues/120

Как видишь, просто, без рук и ансейфа, как там ниже анон возмущается.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38 Ответы: #58

52. Сообщение от Самокатофил (?), 09-Фев-22, 15:14   +/
>> Получается без unsafe ничего на Rust кроме Hello World не написать.
> Получается, если из раста коснуться внешнего г.вна, написанного на си - всё
> превращается в г.вно. Си - этакий современный царь Мидас, только чаще
> превращает не в золото. А не взаимодействовать с уже написанными петабайами
> сишного г.вна не всегда получается - даже ядро линукса на нем
> написано. Но это не на долго, работы в этом направлении начаты...

А что скажешь на это:

https://github.com/jeromefroe/lru-rs/issues/120

Тоже си нахрапел вам в штаны? :-D


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50 Ответы: #55, #56

54. Сообщение от Аноним (55), 09-Фев-22, 15:17   –1 +/
> из раста коснуться внешнего

А что, раст ни для чего не подходит, кроме как написания обёрток вокруг Си?!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50 Ответы: #57, #67

55. Сообщение от Аноним (55), 09-Фев-22, 15:20   –1 +/
Какой чудный раст!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #52

56. Сообщение от Аноним (58), 09-Фев-22, 15:25   +/
> А что скажешь на это:
> https://github.com/jeromefroe/lru-rs/issues/120
> Тоже си нахрапел вам в штаны? :-D

https://github.com/jeromefroe/lru-rs/commit/3c6fdf07a4ab58f6...


#![no_std]
...
-    pub fn iter<'a>(&'_ self) -> Iter<'a, K, V> {
+    pub fn iter(&self) -> Iter<'_, K, V> {
        Iter {
            len: self.len(),
            ptr: unsafe { (*self.head).next },

Какой унылый спрыг.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #52

57. Сообщение от Аноним (58), 09-Фев-22, 15:28   +/
>>> rusqlite
>>> wrapper for using SQLite from Rust.
>> из раста коснуться внешнего
> А что, раст ни для чего не подходит, кроме как написания обёрток вокруг Си?!

Кончай уже газифицировать лужи.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #54

58. Сообщение от Аноним (58), 09-Фев-22, 15:31   +/
> https://github.com/jeromefroe/lru-rs/issues/120
> Как видишь, просто, без рук и ансейфа, как там ниже анон возмущается.

Прекращай смотреть опой:

 
#![no_std]
...
-    pub fn iter<'a>(&'_ self) -> Iter<'a, K, V> {
+    pub fn iter(&self) -> Iter<'_, K, V> {
        Iter {
            len: self.len(),
            ptr: unsafe { (*self.head).next },


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51

67. Сообщение от Самокатофил (?), 09-Фев-22, 17:27   +/
>> из раста коснуться внешнего
> А что, раст ни для чего не подходит, кроме как написания обёрток
> вокруг Си?!

Там выше пример, как и без оберток вокруг си можно в расте плодить уязвимости.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #54

74. Сообщение от . (?), 10-Фев-22, 06:49   +/
я ждал что ктото это напишет. такие вы пупсики
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48

75. Сообщение от Аноним (76), 10-Фев-22, 09:38   +/
Не надо. Далее стандартные средства студии находят больше, чем это.
Ответить | Правка | Наверх | Cообщить модератору

76. Сообщение от Аноним (76), 10-Фев-22, 09:39   +/
Им посрать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37

77. Сообщение от Совершенно другой аноним (?), 10-Фев-22, 11:28   +/
Подскажите пожалуйста, как это лучше назвать? Стиль кодирования? Правила кодирования?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37 Ответы: #80

78. Сообщение от фывфывфыв (?), 10-Фев-22, 13:56   +1 +/
Внезапно, да, помог. Хочешь писать безопасно? Лови небольшие оверхеды и используй unsafe. Хочешь быстро? Следи за своим кодом сам. Что не так?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21

80. Сообщение от Аноним (-), 11-Фев-22, 09:11   –1 +/
Правописание.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #77

81. Сообщение от Redanec (?), 11-Фев-22, 23:41   +/
Miri
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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