Best IDE / Plugin for develop Solidity - ide

I am developing some complex solidity smartcontracts (using some external libraries such as Oraclize).
The think is that the IDE that I am using for the moment Remix and Oraclize IDE dosen't fit with the requirments that I want, I need:
To compile, deploy and test a smartcontract that can use Oraclize library
Have the files in local and be allowed to use a private github repository
Compile the contracts only when clicking Ctrl + S
Have a desktop environment (Like IntellIJ or Atom)
I have tried some plugins like etheratom (With lots of smartcontracts the program brokes), Intellij solidity plugin (In this one I don't know how to compile and deploy the contracts).
EDIT:
And I missed a very important feature that I want and that dosen't have any IDE that I have tryed.
Give the exact position of errors like invalid opcode
I have serched a lot and I didn't find anything.

Since Solidity is relatively young a lot of actions has to be done manually for setting up compiling and deployment process.
In fact there are tools to help you the processes
Truffle is a development environment and testing framework and asset aiming to make life as an Ethereum developer easier.
Ganache-CLI or Ganache-GUI - Ethereum RPC client for testing and development.
Intellij-Solidity   is a plugin for Itnellij-based IDEs offers syntax highlighting, code formatting and autocomplete for Solidity files.
Solidity Development: Setting up environment

IMHO, as a previous user of Atom and IntelliJ, I will recommend VSCode.
I find these extentions really great for developing smart contracts with solidity on VSCode:
Material Icon Theme, for better distinguish folders and files;
solidity or solidity-solhint, Ethereum Solidity Language for Visual Studio Code;
Trailing spaces, highlight trailing spaces and delete them;
Rainbow Brackets, for cool brackets; :)
Indent rainbow, for better and easier indentation
GitHistory and GitLens.
You should have a better experience with that and then try to test the code in the plugin.

Related

Deploying a Smart Contract

If I were to deploy a smart contract for NFT's that I would want to sell which is the best way to do this. And is utilising Injected Web3 on Remix.ethereum.org an acctual option.
Also, if you have a large NFT project, it will only be realistically possible to deploy large amounts of NFTs using scripts in a solidity development framework.
If your deployment process simple, Remix IDE's injected web3 is a viable option.
If you need to run deployment scripts, for example to mint after deployment, run some test transactions, share your contract address on twitter(?) than frameworks such as hardhat are really useful. Because you can create complex deployment scripts with them. For hardhat, that is a JS file.
You can also do it with your bare hands. Compile your code with solc, get the bytecode maybe get the ABI too, send a transaction to the empty address putting your bytecode as data and have a contract on blockchain.

elm IDE (editor and elm-reactor browser)

Hi I am looking for a split screen IDE for elm. Just an editor on one side and a browser on the other running elm-reactor. I know I can position vi running in a text window and a browser in the other window, but this takes time and is fiddly, I am always having to adjust and find these screens after watching a video. Is there a nice simple IDE that I can start up to do this. The online try elm site is good (http://elm-lang.org/try), but I loose my code when I leave the web site. Ideally I'd like to run elm-reactor with an online editor locally on my machine. Any suggestions would be greatly appreciated.
There is an Elm Plug-in for LightTable that you may like. The demo shows that you can have tabs for editing code and tabs for running the web browser, all within the LightTable IDE.
You could also set up the Atom editor to run a web browser in a separate tab. There is an Atom Elm Plugin which will give you syntax highlighting and Elm Oracle support.
There are a few online editors but these are really only good for small bits of Elm code, useful for testing and sharing small ideas, but not much else.
Ellie - This allows the import of any public package, editing the html which wraps an Elm example, and links and forks of examples.
elm-lang.org/try - As you mentioned, this does not allow sharing of code. It does, however, include a few non-core packages like StartApp
share-elm.com - This site is now defunct This site has the benefit of being able to save code for sharing, or for loading gists. However, as of 2016-01-20, this has not been updated to Elm version 0.16, and it only allows you to import core libraries.
I would be remiss if I didn't mention ElmCast's elm-vim plugin for Vim, and elm-mode for Emacs, both of which offer syntax highlighting and Elm Oracle support, as well as integration with Elm build tools. They don't have a built-in web browser, but with a little configuration, you can certainly streamline your workflow.
...and there is an Elm Plugin for the sophisticated IDEs from Jetbrains like IntelliJ, WebStorm etc.
https://plugins.jetbrains.com/plugin/8192-elm-language-plugin
Most of them are commercial software but there is an open source edition from IntelliJ: IntelliJ Community Edition and also free licenses for education and OSS projects.
For just writing Elm I like Atom Editor with the plugins language-elm, elm-oracle and linter-elm-make.
I really like the elm packages for vscode.
With them it is easy to get auto-complete, and auto-formanting/compilation on save, with compile errors displayed on the code.

How to do HotSwapping without using IDE?

I've used DCEVM hotswap technology in eclipse and IntelliJ IDE which was pretty cool feature. By using DCEVM in IDE what I can do is, I can change into the source code i.e add/remove/edit method, classes, properties at the runtime without doing restart the program.
Now my question is:
I want to apply the same features in my running application which is run without using any IDE. To be more specific the running applications source code(compiled code) can change on the fly. And for that bytecode how to deploy on DCEVM for runtime hotswapping?
What I've found is:
We can do hotSwapping without using IDE for that we can write own JNI code to directly hook into JVMTI and trigger a hotswap.
any idea/help would be much helpfull. thanks
Fortunately I found the solution.We can use the HotSwapper plugin to solve this kind of problem. The same question is asked in dcevm discussion forume:
https://groups.google.com/forum/#!topic/hotswapagent/Uk3cUdkHNYQ
Although the information from this link https://news.ycombinator.com/item?id=3198497 is very helpfull but it was asked four years ago, so that I was stuck in.
Now the DCEVM is being more smart It can support various plugin such as Hotswapper, AnonymousClassPatch, WatchResources, Hibernate, Spring, Jersey2, Jetty, Tomcat, ZK, Logback, JSF, Seam, ELResolver, OsgiEquinox and even we can write own plugin too which is more easy to develope.

Can IntelliJ IDEA encapsulate all of the functionality of WebStorm and PHPStorm through plugins? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 2 years ago.
Improve this question
I am in the market for a new IDE but am confused about the overlap between some of Jetbrains' offerings. It looks like IntelliJ IDEA has plugins that allow you to do Node.js and php development.
Can IntelliJ IDEA do everything that WebStorm and PHPStorm do through plugins or do they have special features not available in IDEA? I am hoping to have a single polyglot IDE for all development.
All of the functionality of our lightweight IDEs can be found within IntelliJ IDEA (you need to install the corresponding plug-ins from the repository).
It includes support for all technologies developed for our more specific products such as Web/PhpStorm, RubyMine and PyCharm.
The specific feature missing from IntelliJ IDEA is simplified project creation ("Open Directory") used in lighter products as it is not applicable to the IDE that support such a wide range of languages and technologies. It also means that you can't create projects directly from the remote hosts in IDEA.
If you are missing any other feature that is available in lighter products, but is not available in IntelliJ IDEA Ultimate, you are welcome to report it and we'll consider adding it.
While PHP, Python and Ruby IDEA plug-ins are built from the same source code as used in PhpStorm, PyCharm and RubyMine, product release cycles are not synchronized. It means that some features may be already available in the lighter products, but not available in IDEA plug-ins at certain periods, they are added with the plug-in and IDEA updates later.
But here's the rub, sometimes you can't or don't want to wait. For example I want to use the new support for RubyMotion which includes RubyMotion project structure support, setup of rake files, setup of configurations that are hooked to iOS Simulator etc.
RubyMine has all of these now, IDEA does not. So I would have to generate a RubyMotion project outside of IDEA, then setup an IDEA project and hook up to that source folder etc and God knows what else.
What JetBrains should do is have a licensing model that would allow me, with the purchase of IDEA to use any of other IDEs, as opposed to just relying on IDEAs plugins.
I would be willing to pay more for that i.e. say 50 bucks more for said flexibility.
The funny thing is, I was originally a RubyMine customer that upgraded to IDEA, because I did want that polyglot setup. Now I'm contemplating paying for the upgrade of RubyMine, just because I need to do RubyMotion now. Also there are other potential areas where this out of sync issue might bite me again . For example torque box workflow / deployment support.
JetBrains has good IDEs but I guess I'm a bit annoyed.
I regularly use IntelliJ, PHPStorm and WebStorm. Would love to only use IntelliJ. As pointed out by the vendor the "Open Directory" functionality not being in IntelliJ is painful.
Now for the rub part; I have tried using IntelliJ as my single IDE and have found performance to be terrible compared to the lighter weight versions. Intellisense is almost useless in IntelliJ compared to WebStorm.
IntelliJ IDEA vs WebStorm features
IntelliJ IDEA remains JetBrains' flagship product and IntelliJ IDEA provides full JavaScript support along with all other features of WebStorm via bundled or downloadable plugins. The only thing missing is the simplified project setup.
Taken from : https://confluence.jetbrains.com/display/WI/WebStorm+FAQ#WebStormFAQ-IntelliJIDEAvsWebStormfeatures
Definitely a great question.
I've noted this also as a sub question of the choice for versions within IDEa
that this link may help to address...
http://www.jetbrains.com/idea/features/editions_comparison_matrix.html
it as well potentially possesses a ground work for looking at your other IDE choices and the options they provide.
I'm thinking WebStorm is best for JavaScript and Git repo management, meaning the HTML5 CSS Cordova kinds of stacks, which is really where (I believe along with others) the future lies and energies should be focused now... but ya it depends on your needs, etc.
Anyway this tells that story too...
http://www.jetbrains.com/products.html

Cross platform build environment

As good developers we keep our code as standard compliant as possible to help in porting between platforms. But what tools are available that help us build the code in a uniform way across multiple platforms.
*nix family has make but Windows needs nmake.
I have read about SCons but never used it in anger. What is your favorite build tool, why do you find it effective and are there any limitations (i.e. platforms with bad support etc).
Cross platform IDEs as well.
cmake for c/c++ environments is good. http://www.cmake.org/
I personally use ant, rake, and maven2. I have used ant the most and find it great for several reasons:
Because it is java it works on lots of platforms (without changing any scripts)
The build files are written in XML and fairly easy to write
There are lots of 3rd party extensions available for it and it is easy to write plugins for
we do extreme cross development, and our code runs on linux, windows ce, windows 2K, nucleus and uCOS-II.
since each environment uses different 'make' methodology (out nucleus customer, for example, require us to compile via code-warrior GUI).
i used ANT combined with perl for about 2 years, but this lead the build script to total non-maintainability.
now we moved to use python, which increase the maintainability of the scripts.
bottom line, i did not find a ready-made tool, and had to build my own. maybe, when i have some time (2017 ?) i will pack my scripts and distribute them ....
If you're in the Java world, there are quite a few tools which are cross-platform. Apache Ant and Maven are both build tools which will run on any platform which has Java available for it.
Cruise Control (continuous integration tool) also works on Windows and Linux (it's written in Java as well).
I haven't had any real issues with the core tools, the only problems I've sometimes had have come from things external to the build process, i.e. publishing artifacts - this will vary between systems so I've found there's no single way of setting it up.
For C/C++ development, I've found that bakefile works well. The fairly large wxWidgets project, a cross-platform cross-platform utility and UI library, uses it for their build file generation.
Bakefile is cross-platform, cross-compiler native makefiles generator. It takes compiler-independent description of build tasks as input and generates native makefile (autoconf's Makefile.in, Visual C++ project, bcc makefile etc.).
Bakefile's task is to generate native makefiles, so that people can keep using their favorite tools. There are other cross-platform make solutions, but they either aren't native and require the user to use unfamiliar tools (Boost.Build) or they are too limited (qmake).
You can use gmake on Windows as well with cygwin/minGW or build your windows stuff on Linux.
http://cdtdoug.blogspot.com/2009/05/mingw-cross-for-linux.html
There are tools like Opus Make or MKS Toolkit that offers multiplatform and support. If you have an existing codebase of make script, could be easier migrate to one of there. I suspect you may hunt for similar tools in advertising of DDJ magazine.
We've been running a Java environment for Linux, Windows and the Mac for the last 18 months.
Maven 2 drives our builds, it's pretty easy to get things consistent here. Where M2 plugins don't dare to tread, we use small Ant scripts.
IDE-wise we're using Eclipse & IDEA - both, of course, multi-platform.
Testing - JUnit, Fitnesse, Fest - all nicely multi-platform.
Release scripts are written in Ruby. There's a bit more trouble with Windows here, but a function to convert paths as necessary generally does the trick.
TeamCity does CI. We've actually migrated this from Windows to Linux and encountered no errors at all, very nice package.
We did use GWT for a while and this did cause us large amounts of pain. Be careful if you swing that way.