Cthulhu 21.02.2012 16:19 Miranda

Пстач, а что сейчас модно использовать для документирования кода на C++?
Требования таковы:
1) Софтина на входе получает плюсопроект;
2) Находит в нем все функции/методы/поля/whatever, задает мне вопросы о них;
3) Вставляет перед ними в коде аннотации (типа функция X, принимает такие параметры, возвращает такое значение, делает вот такую хуйню, особенности использования etc);
4) Не захлебывается даже от хардкорного плюсокодца (в разумных пределах, буст или личкрафт ей никто скармливать не будет :3 );
5 (bonus): Генерация на основе всего этого структурированной документации (например в html).

Чо где как?

Recommended by: @0xd34df00d
1. zamotivator 21.02.2012 16:20 tsarevD71DD323

doxygen

2. werehuman 21.02.2012 16:20 Psi+

пункты 1-4 делают IDE, пункт 5 делает doxygen

3. zamotivatorwerehuman /2 21.02.2012 16:21 tsarevD71DD323

LOL WHUT?

4. 0xd34df00dzamotivator /1 21.02.2012 16:22 Azoth_primary

Сабж уже может в п. 2?

5. werehuman0xd34df00d /4 21.02.2012 16:22 Psi+

находит, но вопросы не задаёт

6. zamotivator0xd34df00d /4 21.02.2012 16:22 tsarevD71DD323

Всегда умел.

7. 0xd34df00dzamotivator /6 21.02.2012 16:23 Azoth_primary

Прям вопросы задает? Как запустить для этого?

8. zamotivator0xd34df00d /7 21.02.2012 16:23 tsarevD71DD323

"задаёт вопросы" — указывает тип, видимость и аттачит к ним комментарий в специальном формате

9. Cthulhuwerehuman /2 21.02.2012 16:27 Miranda

А, да, забыл уточнить. В идеале — автономная софтина, без иде. Цель — быстро документировать совсем неоткомментированный код. Про доксиген знаю, но он же вроде как не умеет пункты 1-4?

10. zamotivatorCthulhu /9 21.02.2012 16:28 tsarevD71DD323

попробуй.

11. 0xd34df00dzamotivator /8 21.02.2012 16:35 Azoth_primary

> указывает
Што. Это уже называется задавать вопросы? Ты там совсем ебанулся?

12. Cthulhuzamotivator /8 21.02.2012 16:35 Miranda

Я хуево сформулировал, да. Задает вопросы это значит примерно следующее:
"Чувак, у тебя в файле xxx.cpp в классе dictionary есть вот такой метод:
int add_word(const string&);
Что это вообще такое?
Какова его цель?
Что передается в первом параметре?
Что он возвращает?
Есть ли какие-то дополнительные примечания?"

И потом добавляет перед методом что-то типа

/***
*int add_word(const string&) — что я там ему ответил на первый вопрос
*
*Purpose:
* длинное описание, которое я дал
*
*Entry:
* тут про предназначение параметров
*
*Exit:
* про результат
*
*Notes:
* если есть
*******************************************************************************/

13. hirthwork 21.02.2012 16:40 mcabber

а чем literate programming не угодил?

14. Cthulhuhirthwork /13 21.02.2012 16:41 Miranda

Тем что есть вот кусок кода практически совсем без комментариев, и нужно быстро его привести в тырпрайзный вид. Можно это сделать вручную, конечно, но хотелось бы автоматизации — сидеть, попивая пуэр, и лениво отвечать на вопросы, как в /12 .

15. hirthworkCthulhu /14 21.02.2012 16:43 mcabber

да ты охуел © четыре-года-без-комментариев-в-тырпрайз-коде-кун

16. 0xd34df00dhirthwork /15 21.02.2012 16:43 Azoth_primary

Шесть-лет-без-комментариев-в-личкрафте-кун, УМВР.

17. Cthulhu0xd34df00d /16 21.02.2012 16:46 Miranda

Вот из-за таких как вы плюсы и считают нечитабельным говном! /thread

18. 0xd34df00dCthulhu /17 21.02.2012 16:47 Azoth_primary

А они разве не нечитабельное говно? Люди от этого почему-то блюют → QList<IAccount*> GetAccounts (std::function<bool (IProtocol*)> = [] (IProtocol*) { return true; }) const;

19. Cthulhu0xd34df00d /18 21.02.2012 16:53 Miranda

А от чего блевать конкретно здесь? Просто еще одно полезное применение для лямбд. Может им незнаком сам паттерн применения таких фильтрующих параметров?

20. CthulhuCthulhu /19 21.02.2012 16:56 Miranda

Хотя, конечно, на вид слегка попахивает оверинжинирингом. Тебе реально приходилось вызывать ее с условием сложнее "вернуть все аккаунты одного конкретного протокола"? )

21. 0xd34df00dCthulhu /20 21.02.2012 16:59 Azoth_primary

Да. Например, «вернуть все аккаунты протоколов, поддерживающих такую-то фичу».

22. Cthulhu0xd34df00d /21 21.02.2012 17:00 Miranda

Хм, логично, да.

23. magog 21.02.2012 17:06 Azoth

доксиген

24. Cthulhumagog /23 21.02.2012 17:07 Miranda

Он умеет пункт 2? (так, как описано в /12 )

25. magogCthulhu /24 21.02.2012 17:08 Azoth

а я ебу. Сказал второе, что пришло в голову. Первое было...нутыпонел

26. werehumanmagog /25 21.02.2012 17:09 Psi+

а у вас можно писать плагины на LCLISP?

27. magogwerehuman /26 21.02.2012 17:11 Azoth

хм. Лисп кажется не поддерживается. Точно можно на питоне. И еще на чем-то. Руби, что ли. Но не уверен

28. 0xd34df00dwerehuman /26 21.02.2012 17:16 Azoth_primary

Нет. Запили в Qrosp.

Do you really want to delete ?