Блог пользователя riadwaw

Автор riadwaw, 10 лет назад, перевод, По-русски

Changelog:

  • 0.18
    • CopyAction теперь регенерирует output file
  • 0.17
    • Поддержка для постановки инклудов внутри открытого файла
  • 0.16.4
    • Поддержка WSL
  • 0.16.3
    • Поддержка CLion 2020.1
  • 0.16.2
    • Поддержка CLion 2019.1
  • 0.16
    • Автоматический выбор таска при смене файла
    • Автоматический переход к файлу при выборе таска

JHelper — это плагин для написания контестов на C++. Он автоматически инлайнит код из вашей библиотеки, при этом в файле для сабмита оказывается только используемый код. Кроме того, он позволяет добавлять тесты для тестирования на них вашего решения. Планируется возможность распарсить контест/задачу, чтобы сепмлы добавлялись автоматически

Доступен для CLion

Естественно плагин бесплатный, IDE стоит 89$/год, бесплатны для студентов, бесплатный триал 30 дней, часто можно бесплатно пользоваться EAP(типа бета)-версиями

Плагин доступен из репозитория плагинов в CLion и на сайте JetBrains

Инструкции по установке/использованию на английском на вики. Спрашивайте, что не понятно.

О багах и пожеланиях можно(и нужно) сообщать сюда ил в трекер.

Буду рад

  • багам и пожеланиям
  • реализации фич, до которых я еще не дошел
  • человеку, который сделает вики понятной :)

Все еще можно сделать этот плагин многоязычным (я имею ввиду поддержать другие языки программирования). Всегда готов обсудить это.

Спасибо Egor'у за идею с его Chelper и Abra'е за ревью.

Исходный код | Известные баги | Баг трекер | Инструкции

  • Проголосовать: нравится
  • +64
  • Проголосовать: не нравится

»
10 лет назад, # |
  Проголосовать: нравится -16 Проголосовать: не нравится

Минутка воодушевляющих тегов

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

А почему бы не взять код CHelper, а потом поменять все Java specific на C++ specific? Благо там не очень то и много java specific. Это еще позволит импортировать туда-сюда фичи

А вообще идея чудесная. Я даже буду использовать этот плагин для тех случаев, когда надо попихать

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Какие-то куски кода я беру(+ Парсеры планирую полностью переиспользовать). А вообще, там как раз вроде довольно много вещей Java-specific (например, ты можешь просто взять и из произвольного текста создать Java class и тут же его запустить, что нетривиально(или я не понимаю, как по-человечески) для c++), мне показалось.

    Ну и UI с JB обертками вроде гораздо менее многотекстовое получается.

    Я сперва так и хотел сделать, но у меня не особо вышло, хотя может быть это просто я странный.

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

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

      • »
        »
        »
        »
        10 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Я скорее про JavaPsiFacade

        • »
          »
          »
          »
          »
          10 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Нету аналогов, которые бы искали нужную функцию/класс? Как-то это не по джетбрейновски

          • »
            »
            »
            »
            »
            »
            10 лет назад, # ^ |
            Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

            Удобно — я не очень понимаю как (ну когда имеешь доступ к Psi-шкам уже можно точно также ReferenceSearch'ем, но вопрос как я понимаю в поиске по имени). Точнее — пока вообще никак не умею.

            Вообще у них нет открытого API, кроме как для IDEA и для PyCharmа, так что C++-specific часть еще и без документации почти.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Понимтся, Jacob пытался сделать что-то подобное для Visual Studio при помощи CLang'а. Так что возможно, он захочет поделиться опытом. Правда, наверное, парсить код через API продуктов JetBrains несколько проще, чем то, что он пытался сделать.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

А в чем принципиальная идея для генерации кода кроме быстрого написания собственного чекера? Не проще ли будет написать плагин, который будет посылать на stdin тест? Тогда отпадет необходимость таскать библиотеки с классами для каждого языка, и можно будет сделать один плагин для всех IDE от Jetbrains. У меня где-то даже есть наработки, вот только я не разобрался, как программно собирать и запускать проект из IDE.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    Вообще идея выдернуть из CHelper некоторый независимый от языка костяк, а языкозависимые фичи сделать отдельно интересна. Возможно в следующем месяце у меня будет время зарефакторить CHelper

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Ага, было бы лучше, чем сейчас.

      Отпишись тут о результатах, если таковые будут, пожалуйста.

»
10 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

А как его установить и настроить? Плагин в AppCode добавил, новых менюшек не появилось.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Нужно добавить в удобное меню/тулбар кнопки(либо настроить шорткаты)

    Чуть подробнее на wiki., см. Configuration, usage. Надеюсь, там что-то понятно:)

»
10 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

Четкое название)

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    JetBrains Helper

    А вы шо подумали?

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится +17 Проголосовать: не нравится

      Ничего такого :)

      Просто Plugin для Java называется CHelper, в то время как плагин для C++ называется JHelper. Забавно, на мой взгляд)

»
10 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится

CLion зарелизили http://www.jetbrains.com/clion/

Кстати, а какая политика у JetBrains относительно использования их IDE исключительно в соревнованиях? Какую лицензию покупать надо?

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Я не видел их ценовой политики по CLion пока. Наличие VS express может привести к наличию community edition

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Задал вопрос про appcode — personal за 99$, видио и с CLion будет что-то подобное

      • »
        »
        »
        »
        10 лет назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится

        Лицензия будет примерно по цене как у AppCode сейчас. Будет тогда, когда будет первая коммерческая 1.0 версия. Пока сроков нет, надо посмотреть на фидбек от public EAP и еще много чего доделать.

        Про скидки тоже пока рано говорить )

        А. Казакова, habr

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Code generation is currently broken in public EAP of CLion. issue on GH

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I was testing and I got a problem, can you help me ?

http://snag.gy/AifUx.jpg

Thanks in advance.

»
10 лет назад, # |
  Проголосовать: нравится -13 Проголосовать: не нравится

А что, серьезно кто-то пишет контесты в AppCode или CLion?

Поправьте меня, но мне кажется у 95% олимпиадников стоит Windows или Linux. Тем, кто пишет в блокноте с подсветкой, плагин не нужен, а вот в Visual Studio не помешал бы, хотя мне лично не очень трудно скопипастить пару сэмплов в файл и запускать их до победного конца.

Кроме того, даже когда у меня был Mac, я писал в Sublime, как-то мне кажется все среды разработки для Mac заточены под разработку приложений для iPhone/iPad, но никак не casual консольные программки.

Так что идея хорошая, но вроде проектом будет пользоваться только автор+eps человек.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    CLion кросс-платформенный. [1]

    Кроме того, CLion работает на модели CMake, поэтому от среды в данном случае не зависит тип поддерживаемых проектов. Думаю, что на CMake вполне можно смоделировать "casual консольную программку", поэтому и в среде тоже можно.

    [1] http://confluence.jetbrains.com/display/CLION/Early+Access+Program

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +18 Проголосовать: не нравится

    Подозреваю, что в CLion (еще) не пишут. Подсказка: его первая публичная версия(еще даже не бета) вышла позавчера.

    С AppCode'ом есть проблема, что он платный и только под Mac, но я например на рабочем компе только в AppCode и писал (дома в другой IDE ибо Linux).

    Тех, кто пишет в блокноте с подсветкой я не понимаю, ну пишут и пишут пусть. Сам же говоришь, что в VS — нужен. В чем глобальная разница между VS и CLion (кроме того, что у JB, вероятно, получше API для написания такой вещи) в данном смысле?

    И да, VS тоже не для однофайловых программок создан.

    Короче, по-моему, ты странный.

»
10 лет назад, # |
  Проголосовать: нравится -16 Проголосовать: не нравится

CHelper for Java and JHelper for C++. Interesting names :D

»
10 лет назад, # |
Rev. 15   Проголосовать: нравится 0 Проголосовать: не нравится

Hello Alex, Thanks for making such a tool, and I am trying to set it up to use with CLion. I am having trouble setting up the plugin to generate the code. I have tried following the instructions on the wiki but unfortunately I do not fully understand them I think. I get the following error: Task file not found: Seems your task is in inconsistent state If you could provide any help it would be very much appreciated. Thanks again for the time you spent making this tool!

  • »
    »
    10 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +6 Проголосовать: не нравится

    Well, you need to create files that are in those boxes and add them in CMakeLists to appropriate configurations.

    I've created example project where it's seems to work: Link to Github

    • »
      »
      »
      10 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

      Awesome thank you so much for quick response and help! I downloaded the repository and imported it as a new project and everything works now! Have been using java for all my contests so far with Chelper, but can't wait to now to get better at c++ and use it in contest too with your plugin. Again many thanks for your work!

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Also, just one more quick question if you don't mind. In Chelper there is archive button for tasks that one is done with. What is the best way of replicating that workflow in JHelper? Does one just create a folder and then drag the Task.cpp file and Task.task file there when you are done with problem? Thanks!

      • »
        »
        »
        »
        10 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится

        Probably, right now is the easiest way to do that. I'm going to implement this in more convenient way but I'm afraid it'll happen not very soon. I usually just delete them:)

        • »
          »
          »
          »
          »
          10 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Right, makes sense. Just out of curiosity how much work was it to get the plugin to the current state in terms of hours? At some point I would be interested in trying myself to port JHelper/CHelper to PyCharm for use with Python. I imagine it is a decent amount of work to get everything functional, yes?

          • »
            »
            »
            »
            »
            »
            10 лет назад, # ^ |
              Проголосовать: нравится +1 Проголосовать: не нравится

            Well, it took some time:)

            But I believe it will be easier to port my code to python then Java code to C++.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Added parsers from CHelper(currently only parser from IDE, not from Chrome) including CodeForces.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Chrome extension supported.

For those who use other browsers (Firefox?): it should be quite easy to write similar extension. Almost no logic is required.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can this be integrated with sublime too?

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Could you please give me some hints about how can I add a problem / contest, how to solve the problem (coding, testing and submitting) with JHelpr in Clion?
I've study your wiki, but I need more obvious details!
Thanks...

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    First of all you should configure project (or you may download example project from github)

    To add new task you need either use "Add Task" (manually add name and tests) action or Parse contest action (parse tests from Online judge). To make them available you should either add them on toolbar/menu or enable shortcuts for them.

    Fro wiki:

    Make possible to call JHelper action. Yo should do one or both of the following:

    • Add icons of actions to menu or toolbar. Click to the toolbar-Customize menus and toolbars-Main menu/toolbar-Add after-Plugins-JHelper-select all
    • Add shortcuts for actions. Preferences-Keymap-Plugins-JHelper

    Then cpp file with class will be created, you should code here. To run you just choose run configuration and run:)

    Feel free to ask for clarification if it's not clear (but it's better to try first all because some actions are harder to explain than to do:) )

»
10 лет назад, # |
  Проголосовать: нравится +16 Проголосовать: не нравится

CLion version 1.0 is released

»
10 лет назад, # |
Rev. 6   Проголосовать: нравится 0 Проголосовать: не нравится

Awesome work! Couple of questions:
1. Does Topcoder work with this?
2. What is the usual workflow? For every problem(or contest I parse), it tries to make it TaskA, so should I delete my TaskA every-time.
3. I keep getting many "IllegalArgumentException: childPath should be inside a parentPath", though nothing breaks.
4. Where to write stress-test code(like brute-force program and tester/generator)?
5. In GCJ contest, if I select multi-tests with number of tests known, how to get test case number?
6. Where to write pre-processing code, common to all test cases.

  • »
    »
    10 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Hi

    1. TopCoder is currently not supported. It is in plans but it doesn't really make sense to do it right now while unused coffee elimination is so unstable due to unused code rule
    2. Usually I just delete all tasks between contests. I'm going to do some sort of archivation, but it haven't been done yet.
    3. Could you post stack trace and say when it happens?
    4. Unfortunately there's currently no convenient way to do that. I'm open to your ideas.
      6. You may either put the code in the ctor of solver (and save in member vars) or do that during first function call with static boolean var like
    static bool needcalculate = true;
    if(need calculate) {
    needcalculate = false;
    //calc what you need
    }
    

    The first way is preferable because it will be called for each test (I mean for each test consisting of several test cases).

    5. See 6, you should have testNumber var status either filled by ctor or static var.

»
9 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

This is the screenshot: http://postimg.org/image/8gw88dl4b/

This error is on the left side.

C:\Users\Bat-Orgil.clion10\system\cygwin_cmake\bin\cmake.exe --build C:\Users\Bat-Orgil.clion10\system\cmake\generated\cc361857\cc361857\Debug --target all -- -j 4 Scanning dependencies of target output Scanning dependencies of target test Scanning dependencies of target testrunner [ 33%] [ 66%] [100%] Building CXX object CMakeFiles/output.dir/output/main.cpp.o Building CXX object CMakeFiles/test.dir/tasks/TaskA.cpp.o Building CXX object CMakeFiles/testrunner.dir/testrunner/main.cpp.o Linking CXX executable output.exe Linking CXX executable test.exe /usr/lib/gcc/x86_64-pc-cygwin/4.9.3/../../../../lib/libcygwin.a(libcmain.o): In function main': /usr/src/debug/cygwin-2.2.0-1/winsup/cygwin/lib/libcmain.c:39: undefined reference toWinMain' /usr/src/debug/cygwin-2.2.0-1/winsup/cygwin/lib/libcmain.c:39:(.text.startup+0x7f): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `WinMain' collect2: error: ld returned 1 exit status [100%] Linking CXX executable testrunner.exe CMakeFiles/test.dir/build.make:85: recipe for target 'test.exe' failed make[2]: *** [test.exe] Error 1 CMakeFiles/Makefile2:95: recipe for target 'CMakeFiles/test.dir/all' failed make[1]: *** [CMakeFiles/test.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... Built target output [100%] Built target testrunner Makefile:75: recipe for target 'all' failed make: *** [all] Error 2

Other side has this error for every 5 seconds.

2:00:54 PM NullPointerException: update failed for AnAction with ID=name.admitriev.jhelper.actions.SwitchCMakeConfigurationAction

I think I have sth wrong with run/debug configuration. Can you check it? Thanks. Let me know if you need any other details.

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    First of all, change target (on the setting page opened on the screenshot) from build all to testrunner. If that doesn't help please post content of testrunner/main.cpp

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    As for right side: it should not affect anything, but please post stack trace so that I am able to identify the error (click on error message for that)

»
9 лет назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится

Спасибо за плагин.

  1. При запуске вот этого таска : http://pastie.org/10653080 генерируется некомпилируемый C++11 код: http://pastie.org/10653082 (Проблема в том, что в сгенерированном классе не присутствует default конструктор event(){};, необходимый для инициализации массива event evs[2000005]; Думаю, проблема в том, что конструктор почему то считается unused code.

  2. Планируется ли поддержка topcoder? Выше есть комментарий про unstable unused code. Думаю, плагин будет очень полезен и без удаления unused code, хотя бы для парсинга тестов и создания соотвествущего таска.

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится

    Да, дефолтный конструктор, видимо, выпиливается как unused.
    Сам я сейчас выключаю удаление unused код(есть галочка в настройках), потому что многовато все-таки false positive

    Топкодер, когда-нибудь, может быть, поддержу:) Пока советую mojmoj :)

    • »
      »
      »
      9 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      О, спасибо, не знал про галочку в настройках.

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Released support for local regex input type. Tested only on MacOS, should probably work on Linux.

Please let me know if somebody was able to run it under Windows :)

»
8 лет назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится

Currently it's known not to work correctly with CLion 2016.3, I'll try to fix this ASAP

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Is there any way to disable the auto comment system?

  • »
    »
    7 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    If you mean "code generated" header, no, there's no way to disable it, as far as I remember

»
7 лет назад, # |
Rev. 2   Проголосовать: нравится -10 Проголосовать: не нравится

Некоторые решения с плагином не проходят тест по времени, когда как это же решение, но без плагинов проходит все тесты.

Например, http://mirror.codeforces.com/contest/895/problem/C

Решение прошло тесты: http://mirror.codeforces.com/contest/895/submission/32778591

Это же решение с плагином — не прошло http://mirror.codeforces.com/contest/895/submission/32778751

Почему так происходит?

  • »
    »
    7 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Посмотрите внимательно на diff двух посылок, в непрошедшей у вас бесконечный цикл.

    • »
      »
      »
      7 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Извините, я не заметил, что файлы разные совсем. Плагин, видимо, глючил и не записывал в output нужный main.cpp

      • »
        »
        »
        »
        7 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Запись идёт только в момент, когда запускаешь (кнопкой run или debug)

        Не самое очевидное поведение, согласен

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Note, that CLion 2017.3 is not currently supported

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Recently when my programs print a lot or the testcase input is large, the program often terminates prematurely (but with exit code 0), only in the CLion (2017.2) run field, not in the Debug terminal... Did anyone else encounter this problem?

»
6 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

CLion says,

Error running 'testrunner': Cannot run 'testrunner' on ''

while I am running a TaskX.cpp file after parsing A contes problems.... :(

Link

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Unfortunately last versions of CLion is not (yet) supported. The last supported version is 2017.2 Which version do you use?

    • »
      »
      »
      6 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится

      ok...thank you. I'm using the latest version 2018.1.3...About when would we get the latest version support?

      • »
        »
        »
        »
        6 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        No specific plans now, sorry. When I fight my laziness of when somebody will do it instead of myself

    • »
      »
      »
      6 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      does it support clion 2017.2.3 ?

      • »
        »
        »
        »
        6 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Yes

        • »
          »
          »
          »
          »
          6 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          is there any crome extensions for parse task?? i found chelper parse task crome extensions but it's not working for jhelper.

        • »
          »
          »
          »
          »
          6 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          installation don'e successfully, thanks for your great plugin. is there anyway to save tasks by folders ? each oj has its own folder. or task names become -> "ojName+taskName". can i do any of that?

          • »
            »
            »
            »
            »
            »
            6 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            I don't think that's doable now. You can move to different folders after you solved probably

            • »
              »
              »
              »
              »
              »
              »
              6 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится

              is there anyway to use scanf, and printf instead of in, out ?

              • »
                »
                »
                »
                »
                »
                »
                »
                6 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится

                No ( at least no easy way ). Note that when you are testing, it's actually a stringstream. Just add sync_with_stdio(false) and cin.tie (nullptr) and forget about scanf as scary tail.

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Now, this problem is (I believe fixed) with JHelper 0.15 and CLion 2018.2

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

i wrote a small math library in mymath.h and when i used some function i found all the functions written in output file(main.cpp). is there any way to just include the function i called ?

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    There's setting that allow to remove unused code, but it doesn't work well, so I don't recommend it.

    You may place them in different headers and then only files you included will be added.

    • »
      »
      »
      6 лет назад, # ^ |
        Проголосовать: нравится +10 Проголосовать: не нравится

      yes i see eliminate code and reformat code, what does each one do exactly ?

      • »
        »
        »
        »
        6 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        The first one is trying to eliminate unused code, but it has problems (code can become incorrect). The other is reformatting your code according to coding style configured in IDE (basically the same as clicking ctrl+alt+L.

        • »
          »
          »
          »
          »
          6 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          the problems with eliminate unused code -> are they because a certain way of coding that i may avoid while i write my code ??

          • »
            »
            »
            »
            »
            »
            6 лет назад, # ^ |
            Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

            Well, the main issue is in using templates, e.g like in this issue

            Anyway if you want, you may try it, but be ready to turn it off when you get CE. Probability of having other problems (like getting wrong answer) is rather low.

            • »
              »
              »
              »
              »
              »
              »
              6 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится

              so the general tip here is no templates, yeah!

              • »
                »
                »
                »
                »
                »
                »
                »
                6 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится

                Well, I don't think "not using templates like std::vector with custom types" is better tip than "not using option to eliminate code" but you may choose what fits you best.

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  6 лет назад, # ^ |
                  Rev. 4   Проголосовать: нравится 0 Проголосовать: не нравится

                  i have a lib that has func1, func2, func3, and i called only func3, but for some reasons that i don't know, i found that func1 and func3 are included in main.cpp but func2 aren't included although there is no call of func1 in func3.

                  do you know why ?

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  6 лет назад, # ^ |
                  Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

                  No, not really.

                  My code is pretty straightforward. It just finds all the functions that are unused in generated file according to what CLion reports. So, the most probable problem is that CLion shows some pace where it's used. You may try "find usages" IDE function in generated file to check place where it thinks it's used (because it should use the same mechanism).

                  PS: Honestly, I don't think it's reasonable to spend time investigating why it doesn't work, but you can read the code here

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  6 лет назад, # ^ |
                    Проголосовать: нравится +10 Проголосовать: не нравится

                  i think i figured the problem.

                  all recursive functions are included even if i didn't use them, and non recursive functions are removed.

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  6 лет назад, # ^ |
                    Проголосовать: нравится 0 Проголосовать: не нравится

                  That's a reasonable explanation

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  6 лет назад, # ^ |
                    Проголосовать: нравится -10 Проголосовать: не нравится

                  hope u fix it soon, thanks for your help

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  6 лет назад, # ^ |
                    Проголосовать: нравится +31 Проголосовать: не нравится

                  I'm ready to review your PR.

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

For everybody interested: (I think) I fixed the problem with new version of CLion. After the plugin moderation version 0.15 should work fine with CLion 2018.2

»
6 лет назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится

Added some tips&tricks on configuring templates according to your needs.

»
6 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

riadwaw Can you please explain me the 4th step in Configuration section? Where is the configuration window? Please explain whole step :)

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    If you did step 2, one of the action is called configuration (and its icon is gearwheel)

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

It would be great if you could add a video tutorial for basic setup. Most of the steps are too tough to execute manually.

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    I'm afraid I won't be able to do something more understandable then written instructions I already made

    • »
      »
      »
      6 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Can you describe some of the advantages of Jhelper. I wanted to know somethings like — can we directly submit from jhelper to codeforces, are testcases automatically fetched from codeforces to clion etc. And also if I face some issues while configuring then where can i get some solutions.

»
6 лет назад, # |
  Проголосовать: нравится -7 Проголосовать: не нравится

please sir make a video ,how to configure it and run it.i cant figure out

»
5 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

This is a great Tool!!! Can you tell me how can I remove the comments on the output file?

_/** * code generated by JHelper * More info: https://github.com/AlexeyDmitriev/JHelper * @author */ _

How can I remove these lines? I am using the jhelper-example-project.

»
5 лет назад, # |
  Проголосовать: нравится -10 Проголосовать: не нравится

riadwaw, please, please, please, publish on Youtube a screencast of a creation of sample project for a contest. Instructions would be much more understandable

»
5 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Мне кажется, что удалятель кода не вывозит parameter pack

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Честно говоря удалятель кода так много всего не вывозит, что лучше его не использовать:) вроде я отключал его по умолчанию, мб стоит вообще выпилить

    • »
      »
      »
      5 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Это печально. С моими размерами библиотеки сорс лимит будет близко

      • »
        »
        »
        »
        5 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

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

        А ты инклудишь всю библиотеку разом? Или там ядро взаимозависимое такого размера? Просто кажется если инклудишь что нужно, то таких проблем не должно возникать

        • »
          »
          »
          »
          »
          5 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Ну вот придется об этом задумываться, когда библиотеку пишешь. Я ж только начал, еще вообще не до конца уверен, что все же перейду на плюсы. А ты думал поддержку топкодера запилить? Вроде это почти целиком можно из chelper’а вытащить

          • »
            »
            »
            »
            »
            »
            5 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            Когда-то думал, сейчас уже не думаю:)

            В основном потому что топкодер уже не писал не один год.

            На самом деле, кажется что об этом не особо нужно задумываться т.к у тебя получится почти dag потому что рекурсивные зависимости плохо в хедерах иметь.

»
5 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

It is saying template 'task' is not found. what could be the problem?

»
5 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Is jhelper plugin supported in clion 2.5 ?

»
5 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

2020.1 is not supported yet, make sure not to update if you are going to use jhelper

»
5 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Started getting error "Couldn't parse any task: Maybe format changed?" on codeforces only, it is working for codechef though. (Using competitive companion, 2.15.0, Checking on github repo of competitive companion reveals that there have been some changes to codeforces problem parser recently)

»
5 лет назад, # |
  Проголосовать: нравится -7 Проголосовать: не нравится

Would you please make a video tutorial or described elaborately how to configure and use it with an example?

»
4 года назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Egor added partial support for topcoder in v0.17 (currently under jetbrains premoderation): you still have to test code using other plugin (such as moj), but you can use your library and inline code using new action "Process file"

cc people who asked about topcodet support before: amitsaharana, iensen

PS: a good example how you can add a feature you want.

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    riadwaw What new action "Process file" does? Can you show one example please ?

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      It inlines all the code in current file (so that if you use library code, the file is ready for submission). it is created to use in cases where you can't (or don't want to) use Tasks directly for example with TopCoder

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        riadwaw, is there any wiki how to configure it? I would like to know where those cpps needs to be saved.

»
4 года назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

I was looking around and tried to figure out how to debug using JHelper. I found a closed GitHub issue (https://github.com/AlexeyDmitriev/JHelper/issues/39), and I couldn't figure out how to. If anyone knows how to use the CLion debugger, while using JHelper, I'd appreciate it if you could point me in the right direction. Whenever I added breakpoints, they got skipped over, I tried on my Task.cpp file, testrunner/main.cpp, and output/main.cpp, with their respective configurations, and I couldn't get it working.

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    It works for me when I add breakpoints directly in Task.cpp and I click "Debug" button (not "Run" button). You may need to switch to Debug mode so that most of your code is not optimized.

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      I think I just configured something wrong, as I’m on Debug, and not Release, and it just skips over breakpoints completely, I think I’m going to try a fresh install of CLion.

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        does it work for you for projects and targets unrelated to jhelper?

        • »
          »
          »
          »
          »
          4 года назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Yeah, on my normal non-JHelper projects, it works.

          • »
            »
            »
            »
            »
            »
            4 года назад, # ^ |
            Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

            You can also try to add normaltarget in Jhelper project, e.g add test_debug.cpp and add_executable(test_debug test_debug.cpp) to CMakeLists.txt.

            It it doesn't work for this target, then you probably need to find differences in configuration of toolchain and/or debugger between the projects
            If it does, I have no idea what could be wrong.

            • »
              »
              »
              »
              »
              »
              »
              4 года назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится

              Okay, thank you very much, I’m also going to testing with the sample project, to see if I setup something wrong with CLion overall.

            • »
              »
              »
              »
              »
              »
              »
              4 года назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится

              I replaced my cmake-build-debug with the jhelper-example-projects cmake-build-debug, and modified the required files, and it works nows. Thank you so much!

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I want to use clion for free, How to do that, not a varsity student.

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Using competitive companion, I can make the test case be the sample input. How do I add my own test cases?

»
3 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Did anyone use JHelper for Topcoder? Do I have to create task manually?

Also please let me know if I should ask in different discussion. Thanks.

  • »
    »
    3 года назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    There's no direct topcoder support, but if somebody used it with topcoderz fill free to share your approach

  • »
    »
    3 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    I used with KawigiEdit, saved source code and opened with Clion (example)

    • »
      »
      »
      3 года назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

      The problem I'm trying to solve is — how do I create a JHelper task out of this source code (saved by topcoder plugin — KawigiEdit in your case)?

      Could you please share exact steps you follow? Thanks.

»
23 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

how to used my debugging template in CLion like how to get its output and where, what changed do I need to do in run.template or anywhere else ?

debugging statements/template