IntellJ
installed plugins

https://plugins.jetbrains.com/

Code With Me

 

JetBrains s.r.o.

Compatible with IntelliJ IDEA, AppCode, CLion and 5 more

    General Usage Instructions

    For hosts:

    1. Install the Code With Me plugin.
    2. Restart the IDE.
    3. Locate the Code With Me icon on the toolbar.
    4. Choose Enable Access and Copy Invitation Link.
    5. Share the link with your invitee(s).
    6. Accept your invitee(s)' request to join.
    7. Enjoy collaborative coding!

     

    For guests:

    1. Open the shared link in the browser.
    2. Follow the instructions to download the free IntelliJ Client.
    3. Connect to the remote project.
    4. Enjoy collaborative coding!

 

Screenshot 1

Screenshot 2

 

Screenshot 2

 

Code With Me is a new service created by JetBrains for collaborative development and pair programming. It enables you to share the currently opened project in your IDE with others, and work on it together in real time.

Key features:

  • Simultaneous editing – Investigate issues, review, and work on your code together in real-time.
  • Code Insight – Experience the full power of the IDE, with code autocompletion, navigation, and other code insight features, when working in a shared session in the IntelliJ Client.
  • Permissions management – Configure what others can edit and run in your project, what is available as read-only, and what is completely invisible for your guests.
  • Private Code With Me server – Set up and run Code With Me on your own private network for extra security or for compliance reasons. Learn more.

Useful links:


IDEA Mind Map

Igor Maznitsa

Screenshot 1

Screenshot 2

Screenshot 1

Screenshot 2

 

Mind map editor is adapted part of (SciaReto editor). Mind maps are saved as plain-text files in a Markdown compatible format (MMD). It is the best way to keep semantic information among project files, keep links and even sensitive info (in password protected notes encrypted by AES-256).

t can be very useful to have a mind map editor and viewer directly integrated in your IDE. Not only for quick brainstorming, but also for documentation. The plugin works with MMD files, which are text-based, so it is very easy to have your mind maps under version control and manage their changes.

IDEA Mind Map

 

 

 


 

EduTools

edutools plugin

You don’t have to be Joshua Bloch or Herbert Schildt to teach Java. EduTools helps you teach (and learn) IntelliJ based programming languages right in your IDE. This is done in the form of coding tasks with instant verification and feedback.


https://plugins.jetbrains.com/plugin/6149-shifter

Shifter

 

Kay Stenschke

Compatible with all IntelliJ-based IDEs

 

Shifter by using a selection of keywords or lines and typing them at a caret, shifts them up or down on the keyboard where shortcut gets detected.

The words capable of being shifted in a line can be shifted without the caret touching it with lower/uppercase or lower case with the upper first character of turned words being maintained.

Default keyboard shortcuts are:

  • Ctrl+Shift+Alt+Period: Shift Up
  • Ctrl+Shift+Alt+Comma : Shift Down
  • Ctrl+Shift+Alt+K : Shift Up More*
  • Ctrl+Shift+Alt+J : Shift Down More*

So , Shift more means shifting the selected value multiple times, and in the plug-in configuration, the number of repetitions can be configured.

 

    Screenshot 1

Screenshot 2

Screenshot 1

Screenshot 2

 

String and code manipulations, performed on keyboard shortcut with detection of intended manipulation. The type of manipulation only has to be selected manually when multiple are possible.

Do you like it? Give it a star at GitHub. Rate it at plugins.jetbrains.com.
There's no future for Shifter without support from the community!

When evoked, Shifter detects the type of selection (or lets the user chose when ambiguous) in the current line or keyword at the caret and performs the possible string manipulation.
If there's only one shiftable word in a line, it can be shifted without the caret touching it. Lowercase/uppercase or lower case with upper first character within shifted words is maintained.

DEFAULT KEYBOARD SHORTCUTS

  • Ctrl+Shift+Alt+Comma – Shift Down
  • Ctrl+Shift+Alt+Period – Shift Up
  • Ctrl+Shift+Alt+K – Shift Up More*
  • Ctrl+Shift+Alt+J – Shift Down More*

Shift more: repeats shifting a value multiple times. The amount of repetitions can be configured in the plugin configuration (default: 10).

Mac Users: On Macs, the keyboard shortcuts are Comma or Period key together with Shift+Alt+Cmd

SHIFTING TYPES
Sorting

  • Shifting a multi-line selection sorts the lines alphabetically ascending/descending.
  • Shifting a single-line selection, that is a comma- or pipe-separated list, sorts the items ascending/descending.
  • Shifting a single-line selection, that is XML attribute-value pairs, sorts them alphabetically.
  • Shifting a single-line selection, that is a tupel, flips the items' order (delimiters: ":", "|", ", ", " – ", " + ", " < ", " > ", " <= ", " >= ", " == ", " != ", " === ", " !== ", " || ")
  • Shifting a selection that is a camelCased (w/ lower or upper lead character) word pair, flips the order of the words.
  • Shifting a selected AND && or OR || logical conjunction with two operands, swaps the operands' order
  • Shifting a selected (from questionmark on) ternary expression, swaps "than" and "else" statements
  • Shifting a selected PHP concatenation from two strings / variables, toggles the concatenated items' order
  • Shifting a selection from a CSS file, sorts all attributes inside their selectors (alphabetically, vendor-attributes and vendor-styles at the end)
  • Shifting selected attribute-style lines inside a CSS (or LESS or SASS) file, sorts them (alphabetically, vendor-attributes and vendor-styles at the end)

Numeric Shifting

  • Numeric values – Incrementing/decrementing numbers
  • Strings ending with numbers – increments/decrements the postfix
  • Numeric block selection: opens dialog to chose: 1. in/decrement each or: 2. replace by enumeration
  • UNIX (and millisecond based) timestamps – Increments/decrements by one day, shows a balloon info with the shifted date in human-readable format
  • CSS hex RGB colors – Shifts color value lighter/darker
  • CSS length values – Shifts numeric length values up/down by 1 (units: em, in, px, pt, cm, rem, vw, vh, vmin, vmax)
  • Increment/decrement roman numerals

String Manipulations

  • Shifting a selection within a single line: detects and swaps characters: single quote vs. double quote OR slash vs. backslash
  • Shifting a selected (or the caret touching a) camel-cased string, converts it into a minus- or underscore-separated path (and vice versa)
  • Strings wrapped in single/double quotes and backticks – Shifts to alphabetically next/previous quoted string found in current document
  • Parenthesis: Strings surrounded by round, square or curly brackets: toggles surrounding "(" and ")" to "[" and "]" to "{" and "}"
  • Logical operators: toggles between (selected) "&&" and "||"
  • HTML en/decoding of selected special characters
  • Single characters and string consisting from any amount of the same character can be shifted to the previous/next ASCII value
  • Escaped single or double quotes can be unescaped when shifting a selection

Code- and DOC Comments

  • Selection which is a block comment or multiple line-comments (e.g. PHP, JavaScript, C syntax) – toggle among comment type (//… vs. //). Merges multi-line comments into 1 line.
  • Selected line of code ending with a trailing //-comment – Moves the comment into a new line before the code
  • Selected HTML comment inside a PHP / PHTML file: converts it into a PHP block comment (and vice versa)
  • PHPDoc: Shifting a selected PHP doc comment block that contains @param comments w/ variable name but no data type, guesses and inserts data types
  • PHPDoc: Shifting while the caret is inside an @param annotation that contains no data type, inserts a data type (guessed from the variable name)
  • JsDOC: Shifting w/ the caret touching a data type that is not wrapped in curly brackets, inside an "@param", "@returns" or "@type" annotation: adds the missing curly brackets
  • Selected JsDoc block: Convert "@return" into "@returns", add missing curly brackets around data types in "@param", "@returns" and "@type" lines, correct invalid data types into existing data types (bool => boolean, int(eger) => number), reduce empty JsDoc lines

PHP, JavaScript and TypeScript shifting

  • PHP variables – Shifts to alphabetically next/previous variable found in current document ("shift more" shifts until first variable with a different first letter)
  • Selected PHP array – Shifts among long and shorthand syntax (PHP >= 5.4)
  • Selection which is a Sizzle-Selector – Converts the selector into a corresponding JavaScript variable declaration
  • Selection of multiple JavaScript var declarations in succession – are joined into multiple comma-separated declarations
  • Selected deprecated jQuery observer methods are modernized, e.g. ".click(" becomes ".on('click', ": Event types: blur, change, click, dblclick, error, focus, keypress, keydown, keyup, load, mouseenter, mouseleave, resize, submit, scroll, unload
  • Selected JavaScript string concatenation in TypeScript file – Converts to TypeScript string interpolation

Dictionaric Keyword Shifting
Shifter comes with a customizable, file extension specific and globally usable dictionary of shiftable keywords. Some keyword types from the default dictionary:

  • PHP core magical constants – Shifts PHP's magic constants (FILE/LINE etc.)
  • CSS orientations and positioning: top/right/bottom/left and absolute/relative, and geographical directions (north/east/south/west)
  • Accessibility types: public/private/protected
  • MySql data types: Shifts to next bigger/smaller numeric/string type
  • Primitive data types of Java, JavaScript, PHP, Objective-C
  • Doc comment tags (Java, JavaScript, PHP)
  • JavaScript event types (mouse, keyboard, frame/object, form, control, touch)
  • Named colors from the sRGB color space (white/lightgray/gray…)
  • Text styles (bold, italic…)
  • Web image (gif/jpg/png) and audio (au/aif/wav etc.) format extensions
  • Full and abbreviated names of months and weekdays and units of time
  • Logical operators (and/or/xor/not), arithmetic operations (addition/subtraction…) and arithmetic elements (sum/difference/product..)
  • Meta-syntax terms: foo/bar/baz…
  • Names of common data collection types (list/set/bag/dictionary/tree…)
  • Names of numbers (one/two/three etc.) and ordinal numbers (first/second/third etc.)
  • Boolean (paired) keyword values – Toggles true/false, on/off, yes/no (e.g. Objective-C), shown/hidden, show/hide, positive/negative, from/until, enable(d)/disable(d), pass/fail, min/max, expand/collapse, asc/desc, first/last

Tip: Using Mouse Wheel
To setup the mouse wheel to invoke shifting, open the IDE preferences and go to: “Keymap”. Search for “Shift”, than right-click the shifter action items and use the option “Add mouse shortcut”. Mouse shortcuts can include hotkeys, this way for instance “Shift + Wheel Up” can be assigned to “Shift-Up”, “Shift + Wheel Down” to “Shift-Down”.

Please note: This plugin is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.


 

https://plugins.jetbrains.com/plugin/7179-maven-helper

Maven Helper

IDEA already has powerful tools for analyzing your dependencies and potential problems with them, such as conflicts or cyclic dependencies.

Maven helper offers an alternative UI, which shows your dependencies hierarchically. This can be easier to read and navigate. Also, if you're using the community edition, this is your only option.

Maven Helper IntelliJ IDEA plugin

 

Compatible with IntelliJ IDEA

    Maven helper is intellij maven plugin which helps in finding an easy way of downloading and removes conflicting dependencies .

    It also does not include the actions to run/debug maven goals for a module that contains the current file. Excluding actions to run/debug the current test file for the purpose of solving dependency issues, its really a great time saver.

    • Right-click in Editor | Run Maven
    • Right-click in Project View Toolbar | Run Maven
    • “Quick Run Maven Goal” action will be done after you type CTRL + ALT + R
    • Customize goals: Settings | (Other Settings) | Maven Helper
    • Define shortcuts: Settings | Keymap | Plug-ins | Maven Helper

 

Screenshot 1

Screenshot 2

Screenshot 1

Screenshot 2

 

A must have plugin for working with Maven.

Provides:

  • easy way for analyzing and excluding conflicting dependencies
  • actions to run/debug maven goals for a module that contains the current file or on the root module
  • action to open terminal at the current maven module path
  • actions to run/debug the current test file.
    If maven-surefire-plugin is configured to skip or exclude the test, 'verify' goal will be used, see different configuration styles at https://github.com/harishkannarao/MavenSurefireFailsafeExamples

Usage:

  • Right click in Editor | Run Maven

  • Right click in Project View Toolbar | (Run|Debug) Maven

  • CTRL + ALT + R – "Run Maven Goal" popup (you can use Delete key in the popup)

  • CTRL + SHIFT + ALT + R – "Run Maven Goal on Root Module" popup (you can use Delete key in the popup)

     

  • Customize goals: Settings | Other Settings | Maven Helper

  • Define shortcuts: Settings | Keymap | Plug-ins | Maven Helper

     

  • Open pom file, click on 'Dependency Analyzer' tab, right click in the tree for context actions.

 


 

https://plugins.jetbrains.com/plugin/4230-bashsupport

BashSupport

https://www.bashsupport.com/pro/

 

BashSupport Pro adds advanced features for shell scripts to your IDE.
Debug Bash scripts, run bats-core tests, navigate with ease, and work efficiently with shell scripts.

 

Quick start more

Pricing · Support · Forum

Features more

Debugger, test runner, ShellCheck integration, shfmt formatter, rename, code completion, go to declaration, source command support, quick documentation, and more.

Licenses more

Personal, business, academic, and open–source licenses available.

Debugging a Bash script in IntelliJ with BashSupport Pro

Debugging a Bash script in IntelliJ with BashSupport Pro

 

Running bats-core tests in IntelliJ with BashSupport Pro

Running bats-core tests in IntelliJ with BashSupport Pro

Joachim Ansorg

Compatible with all IntelliJ-based IDEs

    For IntelliJ platform, IdeaVim is a Vim is a Vim emulation plug-in. It is one of the best intellij plugins . The latest version of this plug-in can be installed by using IDE’s plug-in manager.

    All you have to do is to normally start the IDE , and enable the Vim emulation using “Tools | Vim Emulator” menu item.

    You must use Vim keystrokes in all editors and if you wish to disable the plug-in, select the “Tools | Vim Emulator” menu so that it is unchecked and then IDE will work with its regular keyboard shortcuts.

    There is a conflict due to keyboard shortcuts between the Vim emulation and the IDE which can be resolved via “File | Settings | Vim Emulation,” “File | Settings | Keymap” and the key mapping commands in your ~/.ideavimrc file.

Screenshot 1

Bash language support for 2020.1 and earlier.
Note to all users:
Prompted by changes in the JetBrains default plugin offerings, a slow transition away from BashSupport has been started in July 2019. Since it cannot build on top of the new JetBrains Shell plugin, it requires too much maintenance effort for what it adds. So after 10 years of development, BashSupport has been retired.

Due to this, BashSupport will not be ported to version 2020.2 and later. Existing versions stay available, so you can still use BashSupport with JetBrains IDEs 2020.1. Alternatively, to use equivalent features (and more) with your JetBrains IDE, you can switch to the newly developed BashSupport Pro.

BashSupport Pro is attractively priced starting at 2.30 USD per month. To sweeten the transition:

  1. There is a 30-day free trial.
  2. You get a 25% discount on licences purchased before Oct 1, 2020. Use coupon code BASHSUPPORT_THANKS.
  3. You can re-use your run configurations.

https://plugins.jetbrains.com/plugin/164-ideavim

IdeaVim

For IntelliJ platform, IdeaVim is a Vim is a Vim emulation plug-in. It is one of the best intellij plugins . The latest version of this plug-in can be installed by using IDE’s plug-in manager.

All you have to do is to normally start the IDE , and enable the Vim emulation using “Tools | Vim Emulator” menu item.

You must use Vim keystrokes in all editors and if you wish to disable the plug-in, select the “Tools | Vim Emulator” menu so that it is unchecked and then IDE will work with its regular keyboard shortcuts.

There is a conflict due to keyboard shortcuts between the Vim emulation and the IDE which can be resolved via “File | Settings | Vim Emulation,” “File | Settings | Keymap” and the key mapping commands in your ~/.ideavimrc file.

JetBrains s.r.o.

Get

Compatible with all IntelliJ-based IDEs

    Vim emulation plugin for IntelliJ Platform-based IDEs.

 

IdeaVim supports many Vim features including normal/insert/visual modes, motion keys, deletion/changing, marks, registers, some Ex commands, Vim regexps, configuration via ~/.ideavimrc, macros, Vim plugins, etc.

 

See also:

 


 

 

Live Edit

Without a page refresh, reload corresponding browser pages (related to an opened file in IDE) and highlight corresponding element LiveEdit allows you to view your changes in an actual browser window instantly.

Right now, only Google Chrome is supported, and for Firefox & Safari the extension are being postponed. It is so boring to switch to the browser and reload tab manually when you edit your PHP file or Smarty template. Here, just View -> Reload in Browser.

Also check : Best Books For Coding Interviews in 2021

If you want to see your change instantly, then there is nothing to worry and addition SASS/CoffeeScript are supported, although external watching compiler is still needed.

Developers have however termed it as best javascript plugin for intellij .

CSS and JavaScript and any other compilable will be hot-swapped without a page refresh, and obviously, hot-swapped JavaScript will be effective only if it used in a cycle or driven by an event.

Due to its functionality it is one of the best intellij plugins for javascript .

https://clickety-clack.click/img/clickety-clack-site/april2021/live-editing.html

https://plugins.jetbrains.com/plugin/7007-live-edit

Live Edit in HTML, CSS, and JavaScript

Last modified: 25 January 2021

With the Live Edit functionality, the changes you make to your HTML, CSS, or JavaScript code are immediately shown in the browser without reloading the page. Live Edit is available only during a debugging session, see Debug JavaScript in Chrome for details.

https://resources.jetbrains.com/help/img/idea/2020.3/example_live_edit_html_css_dark.png

Gif

Live Edit works for other file types that contain or generate HTML, CSS, or JavaScript. You can also use Live Edit when debugging a Node.js application. See Live Edit in Node.js application for details.

By default, Live Edit is enabled only for HTML and CSS files.

Before you start

Make sure the LiveEdit bundled plugin is enabled on the Settings/Preferences | Plugins page, see Managing plugins for details.

 

Activate and configure Live Edit in JavaScript

  1. In the Settings/Preferences dialog ⌘,, go to Build, Execution, Deployment | Debugger | Live Edit.

  2. On the Live Edit page that opens, select the Update application in Chrome on changes in checkbox.

  3. By default, WebStorm shows on-the-fly preview only for HTML and CSS code. To enable Live Edit in JavaScript, select the JavaScript, HTML and CSS option.

  4. Specify the time-delay between changing the code in the editor and showing this change in the browser: accept the default value 300 ms or specify a custom value using the spin box next to the corresponding field.

  5. To enable reloading of JavaScript files that are executed by Node.js, select the Update Node.js application on change checkbox. Use the spin box to specify the elapsed time for upload, the default value is 300.

  6. To enable Live Edit in code that can be compiled into JavaScript, HTML, or CSS, for example, in TypeScript, Pug, or SCSS, select the Track changes in files compiled to JavaScript, HTML or CSS checkbox.

    All the changes made in such files are automatically saved to trigger compilation and then appear in the browser.

    Note that a changed file is saved shortly after the update, contrary to regular autosave triggered by closing a file, a project, or WebStorm, or by other events.

     

  7. To configure highlighting, select the Highlight current element in browser on caret change checkbox. Otherwise, during a debugging session, you will have to hold ⇧ and hover over the element in the editor to highlight it in the browser.

  8. Select the Restart if hotswap fails checkbox to allow WebStorm to reload the page automatically if the changes couldn't be applied without that.

 

JetBrains s.r.o.

Get

Compatible with IntelliJ IDEA, AppCode, CLion and 6 more

     

Instantly shows changes made to your code during a debugging session, making it unnecessary to reload web pages and Node.js files.

 

By default, the Live Edit functionality is enabled for HTML and CSS files only. To turn it on for JavaScript, Node.js, and other file types, go to Settings/Preferences | Build, Execution, Deployment | Debugger | Live Edit.

 

To start using Live Edit, open the HTML file you're working with and select Debug in its context menu. This will launch the JavaScript debugger in WebStorm and open your file in the browser. As you edit the code, you'll see the changes you make reflected in the browser.

 

Learn more about Live Edit in the IDE documentation.

What’s New

Version History

Unfortunately, JetBrains didn’t leave any update notes.

 


JRebel and XRebel for IntelliJ

JRebel enhances developer productivity – by reloading code changes instantly. It skips the rebuilding, restarting, and redeploying cycle that is common within Java development.

Perforce Software

    It allows developers to reload code changes instantly with the help of JRebel because it is a productivity tool. In JAVA development the common process of a rebuild, restart and redeploy is generally skipped.

    JRebel helps the developers in doing a large amount of work in less amount of time while coding. It also help them stay in flow while doing the work.

    This plugin is one of those intellij java plugin specific for Java usage.

    JRebel now supports several real world java stacks that are even pretty easy to install into the existing development environments. JRebel enables the application and servers in a single click which improves the debugging support in IDE.

JRebel is a productivity tool that allows developers to reload code changes instantly. It skips the rebuild, restart, and redeploy cycle common in Java development. JRebel enables developers to get more done in the same amount of time and stay in the flow while coding. JRebel supports a majority of real-world enterprise java stacks and is easy to install into existing development environments.

 

XRebel is a performance tool for Java development which gives developers real time performance insights to help them understand and resolve potential issues faster and earlier, during the development phase.

 


grep console plugin

Grep console allows one to find specific text or expression from the console . The test of the series of regular expressions which are permitted is done against the console output or file. The style of the entire line or play a sound will be affected with each expression matching a line.

For example, an error message with a red background would be set to show up. It is one of the most time saving and best intellij plugins that i have used ever.

 

Grep Console

Grep console

This is a powerful plugin with a lot of useful features. It allows you to filter your console output, add custom highlighting or folding of similar line groups. You can even play sound or execute a script when a specific line type occurs in your console output. You can also tail files in your project and much more.

Grep console plugin

grep console plugin

Grep Console enables you to define a series of regular expressions which will be tested against the console output. Every expression that matches a line will change the style of the whole line/parts of it.

Vojtech Krasa

Get

Compatible with all IntelliJ-based IDEs

     

Screenshot 1

Screenshot 2

Screenshot 1

Screenshot 2

 

Grep, tail, filter, highlight… everything you need for a console (JS/NPM/GoLand/… Terminals are not supported by IntelliJ!). Also can highlight the editor…
Features:

  • Change colors of matching text.
  • Grep output into a new console tab.
  • Change output or execute any action using custom groovy scripts or plugins.
  • Filter out unwanted lines.
  • Workaround for stdout/stderr stream mixing
  • Fold output.
  • Play sounds on matches.
  • Clear Console on matches.
  • Tail files*.

Editor actions:

  • Apply highlights in the editor according to the plugin's console settings. (Main menu | Tools)
  • Toggle highlight on all occurrences of the selected text in the editor. (Ctrl+Alt+F3; Editor Popup Menu; Main menu | Tools)

*File Tailing:
– Main menu | Tools | Open File in Console
– Main Menu | Help | Tail (IntelliJ) Log in Console
– Project View ToolWindow | right click context menu | Tail
– Drag&Drop "Tail File" panel in main toolbar
– http and Windows context menu integration
– Encoding auto-detection

Inspired by Grep Console plugin for Eclipse Used Remote call plugin implementation for http integration.


8. Browse Word At Caret

 

Browsewordatcaret plug-in allows to browse next or previous word at caret easily, and the appearances of a selected word are highlighted. The usage is to browse with CTRL-ALT-UP, CTRL-ALT-DOWN and note that: on default-keymap this shortcut is also for next/previous occurrence).

 

BrowseWordAtCaret

 

Minas Manthos

Get

Compatible with all IntelliJ-based IDEs

    Screenshot 1

Allows to easily browse next/previous word at caret and highlight other appearances of selected word.

Usage: Browse with CTRL-ALT-UP, CTRL-ALT-DOWN (note: on default-keymap this shortcut is also for next/previous occurrence).

 


9. String Manipulation

String Manipulation

string manipulation plugin

This plugin is pretty straightforward. Use String Manipulation to – well, manipulate strings. Perform a variety of different tasks on strings such as converting to camel case, capitalizing, escaping string in Java, and more.

String Manipulation is pretty straightforward, you just have to use String Manipulation to – well, manipulate strings and perform a variety of different tasks on strings such as converting to camel case, capitalizing escaping string in Java, and more.

it is one of the best intellij plugins for java developers.

 

String Manipulation

 

Maintained by: Vojtech Krasa; original author: Olivier Smedile

Install to IDE

Compatible with all IntelliJ-based IDEs

    Overview

    Versions

    Reviews

 

Screenshot 1

Screenshot 2

Screenshot 1

Screenshot 2

 

Case switching, sorting, filtering, incrementing, aligning to columns, grepping, escaping, encoding…

 

 

Case switching:

  • Switch case (camelCase, kebab-lowercase, KEBAB-UPPERCASE, snake_case, SCREAMING_SNAKE_CASE, dot.case, words lowercase, First word capitalized, Words Capitalized, PascalCase)
  • Toggle: SCREAMING_SNAKE_CASE / camelCase
  • Toggle: snake_case / camelCase
  • Toggle: kebab-case / snake_case
  • Toggle: kebab-case / camelCase
  • Toggle: dot.case / camelCase
  • Toggle: PascalCase / camelCase
  • Toggle: lowercase words / camelCase
  • Toggle: First word capitalized / camelCase
  • Toggle: Capitalized Words / camelCase
  • To camelCase
  • To snake_case
  • To SCREAMING_SNAKE_CASE
  • Capitalize
  • To lower case
  • To UPPER CASE
  • Invert case

-'Switch case' action can be customized, or new ones can be added in settings
-when nothing is selected, then either nothing or whole line or a particular element is selected (report an issue if you find something to improve, each file type needs its own implementation to work flawlessly)

 

Un/Escape:

  • Un/Escape selected Java text
  • Un/Escape selected JavaScript text
  • Un/Escape selected C# text (regular, verbatim, interpolated)
  • Un/Escape selected HTML text
  • Un/Escape selected JSON text
  • Un/Escape selected XML text
  • Un/Escape selected SQL text
  • Un/Escape selected PHP text
  • Convert diacritics (accents) to ASCII
  • Convert non-ASCII to escaped Unicode
  • Convert escaped Unicode to String

 

Encode/Decode:

  • Encode selected text to MD5 Hex
  • Encode selected text to SHA-1 Hex
  • Encode selected text to SHA-256 Hex
  • Encode selected text to SHA-512 Hex
  • Encode selected text to SHA3-256 Hex
  • Encode selected text to SHA3-512 Hex
  • De/Encode selected text as URL
  • De/Encode selected text to Base64 (+ zip/deflate)
  • De/Encode selected text to Hex
  • ISO Timestamp to Epoch Milliseconds
  • Epoch Milliseconds to ISO Timestamp

 

Increment/Decrement:

  • Increment/decrement all numbers found.
  • Duplicate line and increment/decrement all numbers found.
  • Create sequence – Keep first number, replace all other by incrementing
  • Increment duplicate numbers

 

Sort with natural order or Collator:

  • Reversing order of lines
  • Shuffle lines
  • Sort case-sensitive A-z
  • Sort case-sensitive z-A
  • Sort case-insensitive A-Z
  • Sort case-insensitive Z-A
  • Sort line length asc., desc.
  • Sort hexadecimally
  • Sort lines by subselection – only one selection/caret per line is handled
  • Sort tokens (delimited text)

 

Align:

  • Align carets/selections into a vertical line by inserting spaces
  • Format selected text to columns/table by a chosen separator/delimiter and sort by columns
  • Align text to left/center/right

 

Filter/Remove/Trim/Minify…:

  • Grep selected text, All lines not matching input text wil be removed. (Does not work in column mode)
  • Inverted Grep
  • Trim
  • Replace whitespaces with a single space char
  • Remove all spaces
  • Remove duplicate lines
  • Keep only duplicate lines
  • Remove empty lines
  • Remove all newlines
  • Minify JSON
  • Minify JavaScript

 

Other:

  • Reverse Letters
  • Swap Characters/Selections/Lines/Tokens
  • Wrap or shift double quotes to single quotes to backticks
  • Swap between double quotes and single quotes
  • Switch file path separators: Windows<->UNIX

 

Actions are available under Edit menu, or via the shortcut "alt M" and "alt shift M".
You can setup your own shortcuts for better usability.
Popup can be customized in File | Settings | Appearance & Behavior | Menus and Toolbars.


10. Rainbow Brackets

 

My personal favorite is Rainbow Brackets / Parentheses for IntelliJ. The confusion of selecting which bracket needs to be closed is saved by this useful tool.

There is a different color for each pair of brackets/parentheses. It is simple but is unique in addition to that this plug-in adds some color to your otherwise pale code.

 

Indent Rainbow

This plugin is similar to Rainbow brackets, but it does not color your brackets, but rather your indentation. It can be beneficial if you have a lot of indentation levels, which are harder to navigate. It can even mark lines, which don't mark proper indentation levels with red, so it is immediately obvious when there is a mismatch.

Indent Rainbow IntelliJ IDEA Plugin

Again, this is much less visible in the light theme, so Darcula may be a better choice.

 


2. Codota

Codota and TabNine

These two plugins are similar. They enhance your autocomplete based on scanning open-source projects and intelligently predicting what you probably want to type based on the context.

With Codota, you can also look up relevant examples of some class or method in public projects, which can be handy.

Codota relevant examples

https://www.codota.com/on-boarding

 

codota-completions

Shameless plug – got to do it but before you judge listen in… the Codota plugin helps you code faster and with fewer pesky errors. Codota completes lines of code based on millions of Java programs, along with your own unique context (open it from within the IDE using Ctrl + Shift + O). You can also find commonly used open-source Java code snippets for the class or method you’re using in the code search.

Installation Instructions

 

3. Add to gitignore

With Add to gitignore you can create an automated protocol to ignore a specific path. You can track .gitignore files in your repository named .gitignore. Git uses it to determine which files and directories to ignore before you commit. This handy little plugin lets you do just that straight from your IDE.

 

6. Nyan Progress Bar

https://plugins.jetbrains.com/plugin/8575-nyan-progress-bar

nyan progress bar

Nothing wrong with a little bit of fun in your IDE and nothing is more fun than Nyan cat. So how about a Nyan progress bar for those endless waits for rebuilds.

7. CamelCase

Great plugin that switches easily between CamelCase, camelCase, snake_case, SNAKE_CASE, well…you get the point. Wish they had one for blog writing too.

 

9. CheckStyle-IDEA

This plugin provides both real-time and on-demand scanning of Java files with CheckStyle from within IDEA.

Please note this is not an official part of Checkstyle – they neither endorse nor bear responsibility for this plugin. Please see the README for full details.

This plugin provides both real-time and on-demand scanning of Java files with CheckStyle from within IDEA. Checkstyle is a static code analysis tool used for checking if Java source code is compiling correctly. This awesome plugin connects to CheckStyle you do it from your IDE.

10. AWS Toolkit

AWS Toolkit

 

Amazon Web Services

What is the AWS Toolkit for JetBrains?

PDF

Kindle

RSS

To start using the AWS Toolkit for JetBrains right away, skip ahead to the installation and first-time connection instructions.

The AWS Toolkit for JetBrains is an open source plugin for the integrated development environments (IDEs) from JetBrains. The toolkit makes it easier for developers to develop, debug, and deploy serverless applications that use Amazon Web Services (AWS).

Topics

Compatible with all IntelliJ-based IDEs

Screenshot 1

Screenshot 2

Screenshot 1

Screenshot 2

 

The AWS Toolkit for JetBrains makes it easier to write applications built on Amazon Web Services. If you come across bugs with the toolkit or have feature requests, please raise an issue on our GitHub repository.

 

See the user guide for how to get started, along with what features/services are supported.

 

Features:

 

AWS Toolkit is an open-source plugin used to make AWS application development easier. Use the toolkit to create, test, and debug apps built on AWS.

11. EduTools

 

You don’t have to be Joshua Bloch or Herbert Schildt to teach Java. EduTools helps you teach (and learn) IntelliJ based programming languages right in your IDE. This is done in the form of coding tasks with instant verification and feedback.

 


13. Python

python programming logo

The Python plug-in provides smart editing for Python scripts. The feature set of the plugin corresponds to PyCharm IDE Professional Edition.
PyCharm blog
Discussion forum
Issue tracker

The Python plugin adds full-scale functionality for Python development. Integrate Python into your IntelliJ platform. What more could you ask for?!


15. Docker Integration

 

Provides integration with Docker.

  • Download and build Docker images
  • Create and run Docker containers from pulled images or directly from a Dockerfile
  • Use dedicated Docker run configurations
  • Run multicontainer applications using Docker Compose

To configure, open Settings | Build, Execution, Deployment | Docker.

Documentation

https://clickety-clack.click/img/docker.html?_ga=2.224709084.756765357.1613765453-1833211179.1613765453#docker_troubleshooting

 

Docker

Last modified: 09 February 2021

docker container logo

This plugin allows you to download and build Docker images, create and start Docker containers, and do other related tasks. Docker lets developers deploy applications inside containers for testing code in an environment identical to production.

 

Docker enables developers to deploy applications inside containers for testing code in an environment identical to production. IntelliJ IDEA provides Docker support using the Docker plugin. The plugin is bundled and enabled by default in IntelliJ IDEA Ultimate Edition. For IntelliJ IDEA Community Edition, you need to install the Docker plugin as described in Manage plugins.

 

"Spoiler

Enable Docker support

  1. Install and run Docker.

    For more information, see the Docker documentation.

  2. Configure the Docker daemon connection settings:

    • In the Settings/Preferences dialog ⌘,, select Build, Execution, Deployment | Docker.

    • Click to add a Docker configuration and specify how to connect to the Docker daemon.

      The connection settings depend on your Docker version and operating system. For more information, see Docker configuration.

      The Connection successful message should appear at the bottom of the dialog.

      The Docker connection settings

       

      The Path mappings table is used to map local folders to corresponding directories in the Docker virtual machine's file system. Only specified folders will be available for volume binding.

      This table is not available on Linux, because when running Docker on Linux, any folder is available for volume binding.

  3. Connect to the Docker daemon.

    The configured Docker connection should appear in the , and click , or select Connect from the context menu.

    The Docker tool window, connected to Docker

    To edit the Docker connection settings, select the Docker node and click on the toolbar, or select Edit Configuration from the context menu.

The Services tool window (View | Tool Windows | Services or ⌘8) enables you to pull and push images, create and run containers, manage Docker Compose, and so on. As with other tool windows, you can start typing the name of an image or container to highlight the matching items.

The Docker tool window, text search

Managing images

Docker images are executable packages for running containers. Depending on your development needs, you can use Docker for the following:

  • Pull pre-built images from a Docker registry

    For example, you can pull an image that runs a Postgres server container to test how your application will interact with your production database.

  • Build images locally from a Dockerfile

    For example, you can build an image that runs a container with the Java Runtime Environment (JRE) of some specific version to execute your Java application inside it.

  • Push your images to a Docker registry

    For example, if you want to demonstrate to someone how your application runs in some specific version of the JRE instead of setting up the proper environment, they can run a container from your image.

Images are distributed via the Docker registry. Docker Hub is the default public registry with all of the most common images: various Linux flavors, database management systems, web servers, runtimes, and so on. There are other public and private Docker registries, and you can also deploy your own registry server.

 

Configure a Docker registry

 

Pull an image from a Docker registry

 

Build an image from a Dockerfile

 

Push an image to a Docker registry

Images that you pull or build are stored locally and are listed in the Services tool window under Images. When you select an image, you can view its ID or copy it to the clipboard by clicking the button on the Properties tab.

Docker image properties

To display detailed information about an image, right-click it and select Inspect from the context menu. IntelliJ IDEA runs the docker image inspect command and prints the output to the Inspection tab.

Docker image Inspection tab

Images with no tags <none>:<none> can be one of the following:

  • Intermediate images that serve as layers for other images and do not take up any space
  • Dangling images that remain when you rebuild an image based on a newer version of another image. You should regularly prune dangling images to preserve disk space.

To hide untagged images from the list, click on the Docker toolbar, and then click Untagged Images to remove the check mark.

To delete one or several images, select them in the list and click .

Running containers

Containers are runtime instances of corresponding images. For more information, see the docker run command reference.

IntelliJ IDEA uses run configurations (Run | Edit Configurations) to run Docker containers. There are three types of Docker run configurations:

 

Any Docker run configuration can also be created manually. From the main menu, select Run | Edit Configurations. Then click , point to Docker, and select the desired type of run configuration.

 

Run a container from an existing image

 

Run a container from a Dockerfile

Command-line options

When running a container on the command line, the following syntax is used:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Copied!

All optional parameters can be specified in the corresponding Docker run configuration fields.

To open a run configuration, right-click a container and select Edit Configuration, or use the gutter icon menu in the Dockerfile, or select Run | Edit Configurations from the main menu.

The Edit Deployment Configuration dialog with command-line options

Options are specified in the Command line options field. In the previous screenshot, the container is connected to the my-net network and is assigned an alias my-app.

Commands and arguments to be executed when starting the container are specified in the Entrypoint and Command fields. These fields override the corresponding ENTRYPOINT and CMD instructions in the Dockerfile. In the previous screenshot, when the container starts, it executes the docker-entrypoint.sh script with postgres as an argument.

 

Not all docker run options are supported. If you would like to request support for some option, leave a comment in IDEA-181088.

The Command preview field shows the actual Docker command used for this run configuration.

You can also configure the following container settings in the run configuration:

  • Bind mounts

  • Bind ports

  • Environment variables

  • Build-time arguments

    Bind mounts

    Docker can mount a file or directory from the host machine to the container using the -v or --volume option. You can configure this in the Docker run configuration using the Bind mounts field.

     

    Make sure that the corresponding path mappings are configured in the Docker connection settings (the Path mappings table).

    The Edit Deployment Configuration dialog with bind mounts

    Click in the Bind mounts field and add bindings by specifying the host directory and the corresponding path in the container where it should be mounted. Select Read only if you want to disable writing to the container volume. For example, if you want to mount some local PostgreSQL data directory (/Users/Shared/pg-data) to the PostgreSQL data directory inside the container (/var/lib/pgsql/data), this can be configured as illustrated on the previous screenshot.

    If you expand the Command preview field, you will see that the following line was added:

    -v /Users/Shared/pg-data:/var/lib/pgsql/data
    

    Copied!

    This can be used in the Command line options field instead of creating the list of volume bindings using the Bind Mounts dialog.

     

    View and modify volume bindings for a running container

    Bind ports

    Docker can map specific ports on the host machine to ports in the container using the -p or --publish option. This can be used to make the container externally accessible. In the Docker run configuration, you can choose to expose all container ports to the host or use the Bind ports field to specify port mapping.

    The Edit Deployment Configuration dialog with bind ports

    Click in the Bind ports field and bindings by specifying which ports on the host should be mapped to which ports in the container. You can also provide a specific host IP from which the port should be accessible (for example, you can set it to 127.0.0.1 to make it accessible only locally, or set it to 0.0.0.0 to open it for all computers in your network).

    If you already have PostgreSQL running on the Docker host port %5432%, you can map port %5433% on the host to %5432% inside the container as illustrated on the previous screenshot. This will make PostgreSQL running inside the container accessible via port %5433% on the host.

    If you expand the Command preview field, you will see that the following line was added:

    -p 5433:5432
    

    Copied!

    This can be used in the Command line options field instead of creating the list of port bindings using the Port Bindings dialog.

     

    View and modify port bindings for a running container

    Environment variables

    Environment variables are usually set in the Dockerfile associated with the base image that you are using. There are also environment variables that Docker sets automatically for each new container. You can specify additional variables and redefine the ones that Docker sets using the -e or --env option. In a Docker run configuration, you can use the Environment variables field to configure environment variables.

    The Edit Deployment Configuration dialog with environment variables

    Click in the Environment variables field to add names and values for variables. For example, if you want to connect to PostgreSQL with a specific username by default (instead of the operating system name of the user running the application), you can define the PGUSER variable as illustrated on the previous screenshot.

    If you expand the Command preview field, you will see that the following line was added:

    --env PGUSER=pg-admin
    

    Copied!

    This can be used in the Command line options field instead of creating the list of names and values using the Environment Variables dialog. If you need to pass sensitive information (passwords, secrets, and so on) as environment variables, you can use the --env-file option to specify a file with this information.

     

    View and modify environment variables for a running container

    Build-time arguments

    Docker can define build-time values for certain environment variables that do not persist in the intermediate or final images using the --build-arg option for docker build. These must be specified in the ARG instruction of the Dockerfile with a default value. You can configure build-time arguments in the Docker run configuration using the Build args field.

    For example, you can use build-time arguments to build the image with a specific version of PostgreSQL. To do this, add the ARG instruction to the beginning of your Dockerfile:

    ARG PGTAG=latest
    
    FROM postgres:$PGTAG
    

    Copied!

    The PGTAG variable in this case will default to latest if you do not redefine it as a build-time argument. So by default, this Dockerfile will produce an image with the latest available PostgreSQL version. However, you can use the Build Args field to redefine the PGTAG variable.

    The Edit Deployment Configuration dialog with build-time arguments

    In the previous screenshot, PGTAG is set to 9, which will instruct Docker to pull postgres:9. When you deploy this run configuration, it will build an image and run the container with PostgreSQL version 9.

    To check this, execute postgres --version inside the container and see the output: it should be postgres (PostgreSQL) 9.6.6 or some later version.

    If you expand the Command preview field, you will see that the following option was added to the docker build command:

    --build-arg PGTAG=9
    

    Copied!

    Interacting with containers

    Created containers are listed in the Services tool window. When you select a container, you can view its ID (and the ID of the corresponding image) and copy it to the clipboard using on the Properties tab. You can also specify a new name for the container and click Save to start another container with this new name from the same image.

    By default, the Services tool window displays all containers, including those that are not running. To hide stopped containers from the list, click , and then click Show Stopped Containers to remove the checkbox.

    If a container was created using a Docker run configuration, to view its deployment log, select it and open the Deploy log tab. To view the log messages from the container's STDOUT and STDERR, select it and open the Log tab. For more information, see the docker logs command reference.

    You can browse the files inside a running container using the Files tab. Select any file and click to open it remotely in the editor or click to create a copy of the file as a scratch.

     

    The file browser may not work by default for containers that don't have the full ls package, for example, images that are based on Alpine, Photon, and BusyBox. To use it, you can add the following command in the Dockerfile:

     

    FROM alpine:3.10
    RUN apk add coreutils
    

    Copied!

     

     

    FROM photon:3.0
    RUN echo y | tdnf remove toybox
    

    Copied!

     

    Execute a command inside a running container

     

    View detailed information about a running container

     

    View processes running in a container

     

    Attach a console to the output of an executable container

    Docker Compose

    Docker Compose is used to run multi-container applications. For example, you can run a web server, backend database, and your application code as separate services. Each service can be scaled by adding more containers if necessary. This enables you to perform efficient development and testing in a dynamic environment, similar to production.

    Run a multi-container Docker application

    1. Define necessary services in one or several Docker Compose files.

    2. From the main menu, select Run | Edit Configurations.

    3. Click , point to Docker and then click Docker-compose.

      The Docker-compose configuration

       

    4. Specify the Docker Compose files that define services which you want to run in containers. If necessary, you can restrict the services that this configuration will start, specify environment variables, and force building of images before starting corresponding containers (that is, add the --build option for the docker-compose up command).

    5. When the run configuration is ready, execute it.

     

    To quickly create a Docker-compose run configuration and run it with default settings, right-click a Docker Compose file in the Project tool window and click Run in the context menu. You can also use gutter icons and the context menu in the Docker Compose file to control services.

    When Docker Compose runs your multi-container application, you can use the Services tool window to control specific services and interact with containers. The containers are listed under the dedicated Compose nodes, not under the Containers node (which is only for standalone containers).

     

    Scale a service

     

    Stop a running service

     

    Stop all running services

     

    Bring your application down

     

    Open the Docker Compose file that was used to run the application

    The Docker-compose run configuration will identify environment files with the .env suffix if they are located in the same directory as the Docker Compose file.

    Docker debug

    To debug your application running in a Docker container, you can use the remote debug configuration:

    1. In the main menu, select Run | Edit Configurations.
    2. Click and select Remote.
    3. In the Before launch section, click and select Launch Docker before debug.
    4. Specify the Docker configuration you want to run and configure the preferred container port for the debugger to attach to if the default one is allocated to something else.
    5. Check the Custom Command and modify it if necessary.
    6. Apply all changes, remove any running containers of the application you want to debug, and then launch the remote debug configuration.

    For examples, see the following tutorials:

    • Debug a Java application using a Dockerfile

    • Run and debug a Spring Boot application using Docker Compose

      Troubleshooting

      If you encounter one of the following problems, try the corresponding suggested solution.

       

      Unable to connect to Docker

       

      Unable to use Docker Compose

       

      Unable to use port bindings

       

      Unable to associate existing Dockerfiles or Docker Compose files with relevant types

      Limitations

      The Docker integration plugin has certain limitations and bugs, however JetBrains is constantly working on fixes and improvements for it. You can find the list of Docker issues in our bug tracking system and vote for the ones that affect you the most. You can also file your own bugs and feature requests.

       


 

CSV PLUGIN

 

Lightweight CSV plugin that allows you to edit files in CSV/TSV format.

 


 

FindBugs-IDEA

FindBugs-IDEA

 

Andre Pfeiler

Get

Compatible with IntelliJ IDEA, Android Studio

    Overview

    Versions

    Reviews

 

Screenshot 1

Screenshot 2

Screenshot 1

Screenshot 2

 

Provides advanced support for UI automation with Selenium libraries in JVM/Python languages:

  • Highlighting and validation of XPath, CSS, JavaScript in UI testing APIs for Java/Kotlin/Groovy/Python.
  • Project scaffolding with popular Selenium libraries.
  • Page Object Generator.
  • Code completion for HTML tags, attributes and CSS properties in tests.
  • Run Selenoid action in browsers.json
  • Line markers and navigation to issue trackers and TMS cases for Allure Framework and Serenity BDD.
  • Code completion and validation for configuration files of Selenium Grid, Selenoid and Allure Framework.
  • Line markers with quick navigation to @Step usages in code.
  • Find usages and code completion for @Feature, @Epic, @Story, @Owner and @Lead usages for Allure Framework.

JVM Libraries: Selenium, FluentLenium, Geb, Selenide, Selenoid, Allure, Serenity BDD and JDI Light.
Python Libraries: Selenium, Selene.

 


Markdown

https://plugins.jetbrains.com/plugin/7793-markdown

JetBrains s.r.o.

Install to IDE

Compatible with IntelliJ IDEA, Android Studio, AppCode and 8 more

     

Provides the capability to edit Markdown files within the IDE and see the rendered HTML in a live preview.

Includes the following features:

  • Document structure view, headers folding, highlighting, TODOs.
  • Code completion and navigation for links to project files.
  • Embedding fenced code blocks for different languages.
  • Visualizing diagrams for the DOT or PlantUML diagramming languages.
  • Ability to use custom stylesheets for a live preview.

 

 


 

Kubernetes

https://plugins.jetbrains.com/plugin/10485-kubernetes

Features:

Cluster interaction

  • Browsing cluster objects and extracting their configurations
  • Viewing and downloading pod logs
  • Attaching pod console
  • Running shell in pod
  • Applying resource YAML configurations from the editor
  • Deleting resources from cluster
  • Completion of ConfigMap/Secret entries from the cluster
  • Configuring custom kubeconfig files globally and per project
  • Switching contexts and namespaces
  • Using API schema (including CRD) from the active cluster for editing resource manifests

Editing resource configurations (API 1.5 – 1.20)

Rich YAML support

  • Auto-completion of keys/values/resource kinds/API versions
  • "Deep" key auto-completion: invoke Smart Completion when you type — matching keys from all levels below will be offered
  • Quick documentation
  • Detection of invalid/missing/duplicated keys
  • Detection of non-editable (read only) keys and resources
  • Detection of deprecated keys and resources
  • Completion/navigation/find usages/rename of Kubernetes meta-information labels
  • Completion/navigation/find usages/rename of ConfigMap/Secret entries
  • Quick jump to matching selector targets and back
  • Docker image completion (powered by JetBrains Docker plugin)
  • Enhancements for original Kubernetes model (enums instead of plain strings where applicable)

Support for editing Helm templates

  • Helm 2.x/3.x file structure/schema support
  • Go Template syntax support (powered by JetBrains Go Template plugin)
  • Object values auto-completion/navigation/rename/inspections
  • Named templates auto-completion/navigation/rename/inspections
  • Dependency name/version/repository auto-completion
  • Template result preview
  • External tgz dependencies content browsing in the project tree
  • Quick documentation
  • validation of values.yaml by values.schema.json (powered by JetBrains JSON plugin)
  • Useful actions: lint, update dependencies, create chart, create dependency, add repository, convert dependencies from Helm 2.x format to Helm 3.x

Support for editing Kustomize configuration (kustomization.yaml)

  • Fields completion/validation
  • Local file path completion/validation
  • Quick documentation
  • Kustomize version selection (kubctl embedded, standalone)
  • Kustomize 3.x inline patches editing support (experimental)

Custom resource definition (CRD) support

Custom resources can be validated by providing complementary OpenAPI 2.0 files with CRD schemas and/or CRD resource definitions (YAML) (limited support).

 


 

 

 

 

19. AceJump

https://www.youtube.com/watch?v=8cgy8ITtsJE

acejump plugin

AceJump allows you to quickly navigate the caret to any position visible in the editor. If no matches can be found on-screen, AceJump will scroll to the next match it can find.


20. Zero Width Character Locator

zero width plugin

We’re getting close to the end of our very comprehensive list of IntelliJ plugins. I really like plugins like this one that offer a simple solution to a very common problem. The Zero Width Character Locator plugin adds an inspection that prevents some hard to find bugs related to invisible zero width characters in source code and resources.

 


 

Snyk

Application security is often unfortunately neglected. These days most of the application code comes from third-party libraries and frameworks. You need to make sure you use new versions without security vulnerabilities. There are tools, which can help you with this. One of them is Snyk.

Snyk – Detecting dependencies with known vulnerabilities

22 November, 2017#Security

How to detect and fix security vulnerabilities in your dependencies using Snyk?

Snyk offers many features. One of them is IDE plugin, which can scan your dependencies and detect what security vulnerabilities they contain.

Snyk IntelliJ IDEA plugin

 

 

 

"How
Hidden content

 

Introduction

Earlier, I published post Detecting dependencies with known vulnerabilities, where I was describing how important is to make sure your third-party dependencies contain no security vulnerabilities. And how to achieve it with OWASP Dependency-Check. This post describes another tool, which can be used to eliminate vulnerable dependencies — Snyk.

Unlike OWASP Dependency-Check, Snyk started as a tool for managing NPM dependencies. It is actively developed and new features are often introduced. Currently (as of November 2017), Snyk supports not only NPM but also Java (Maven and Gradle), Ruby, Scala, Python and Go. However, the support for NPM is still the strongest, so many nice features are not available for other languages.

Unlike Dependency check, which uses National Vulnerability Database, Snyk has its own Vulnerability DB, which is also available on GitHub.

Similar to Dependency Check, you can easily integrate Snyk with your Build and CI tools, so you can break the build when new security vulnerabilities are introduced.

Installation and Setup

Before you can use Snyk, you need to install it using NPM. Make sure you have Node.js installed to do so. Then you can simply run:

 

npm install –g snyk

To run Snyk tests, you need to have a Snyk account and be authenticated. Just run:

 

snyk auth

This will open your browser's window, where you can create your account or sign in. Your security token will be downloaded and stored locally, so you don't have to auth the next time.

If you want to use Snyk on your CI server, you'll not be able to use this approach. In such case, you need to create your account on https://snyk.io and then you can go to My Account → General, where you can find your API token. Then just simply run Snyk auth with your token:

 

snyk auth [your token here]

Alternatively, you can store auth token directly in an environmental variable SNYK_TOKEN.

In case you want to scan your NPM dependencies, you also need to run npm install now before you can perform vulnerability tests. For Python dependencies, you'll need to run:

 

pip install -r requirements.txt

Running Test

Once you have your environment set up, you can run your tests. Let's start with:

 

snyk test

Snyk fetches the latest data from its own Vulnerability DB and checks all your dependencies for know vulnerabilities. The output may look something like this:

 

✗ Medium severity vulnerability found on org.apache.poi:poi@3.0-FINAL
- desc: XML Entity Expansion (XEE)
- info: https://snyk.io/vuln/SNYK-JAVA-ORGAPACHEPOI-31387
- from: com.vojtechruzicka:snyk-maven-example@1.0-SNAPSHOT > org.apache.poi:poi@3.0-FINAL
✗ Medium severity vulnerability found on xerces:xercesImpl@2.11.0
- desc: Denial of Service (DoS)
- info: https://snyk.io/vuln/SNYK-JAVA-XERCES-30183
- from: com.vojtechruzicka:snyk-maven-example@1.0-SNAPSHOT > xerces:xercesImpl@2.11.0
✗ High severity vulnerability found on xerces:xercesImpl@2.11.0
- desc: Denial of Service (DoS)
- info: https://snyk.io/vuln/SNYK-JAVA-XERCES-31497
- from: com.vojtechruzicka:snyk-maven-example@1.0-SNAPSHOT > xerces:xercesImpl@2.11.0
Tested 5 dependencies for known vulnerabilities, found 3 vulnerabilities, 3 vulnerable paths.

Monitoring for new vulnerabilities

When running snyk test, you are only notified about the currently known vulnerabilities, which are already part of the Snyk vulnerability DB. New vulnerabilities are, however, discovered all the time. Dependencies previously considered safe can contain high severity issues in the blink of an eye.

Snyk allows you to monitor your application's dependencies continuously for newly discovered issues. You need to run snyk monitor command:

 

snyk monitor

Snyk creates a snapshot of your dependencies and stores it. It then sends you an email whenever a new vulnerability, which affects you is discovered. You should run the monitor command every time you change your dependencies (e.g. after deploy job) to update the snapshot.

Addressing Issues

Update

If the vulnerability is not brand new, there is a good chance it was already fixed in a later version of your dependency. Updating dependency version is the easiest fix, but may not always be available. Snyk DB provides all the required information, so you can tell whether upgrading version will actually fix the vulnerability.

Patch

Sometimes, unfortunately, official fix in the form of a new version for the vulnerability is not available. Maybe the dependency is no longer actively developed or it is just too early after the discovery. Fortunately, nothing is lost and there is a good chance you will be able to still resolve your issue.

Snyk patches are one of the cool features, which makes Snyk better than other similar services. For some dependencies, the Snyk team actually provides their own fix in the form of patch — a minimal set of changes required to fix the security vulnerability. This feature is unfortunately currently available only for NPM dependencies.

How does it work? The problem is that after applying the patch locally, the changes would be overwritten the next time you would run npm install. To prevent this, Snyk introduces a special .snyk file, which contains information about all the patches which need to be applied. Then after installing local dependencies by npm install, you just need to run snyk protect.

It downloads and applies all the patches contained in the .snyk file. So you need to run it after npm install but before the build. You don't need to edit the .snyk file manually, Snyk Wizard will do it for you (see below).

Ignore

You can decide to ignore a known vulnerability by running snyk ignore.

This may be handy in case there is currently no update or patch. Snyk will notify you via email when a fix is available later. It is a good idea always to provide a reason for ignoring (using –reason) and the duration short enough (using –expiry) so the issue is not buried permanently. By default ignore will expire after 30 days. Ignored issues are stored in the .snyk file.

Snyk Wizard

Running snyk test will find all the security vulnerabilities for you. It will not, however, fix them for you. Snyk Wizard comes to the rescue. You can run it with:

 

snyk wizard

This will go through all your vulnerable dependencies and offer:

  1. Update the dependency to a newer version, which fixes the issue, if available
  2. Apply a patch if available
  3. Ignore
  4. Skip for now

All your decisions will be applied — package.json file will be changed to include the new dependencies and a .snyk file will be created with all the patches and ignores. Finally, the snyk monitor will be run to create a snapshot of your dependencies, so you will be notified in the future if a new vulnerability or fix is added. However, currently, only NPM dependencies can be handled by the snyk wizard.

Wizard's console output can look like this:

 

C:\projects\snyk-example>snyk wizard
Snyk's wizard will:
  * Enumerate your local dependencies and query Snyk's servers for vulnerabilities
  * Guide you through fixing found vulnerabilities
  * Create a .snyk policy file to guide snyk commands such as `test` and `protect`
  * Remember your dependencies to alert you when new vulnerabilities are disclosed
Querying vulnerabilities database...
Tested 1158 dependencies for known vulnerabilities, found 11 vulnerabilities, 30 vulnerable paths.

? 5 vulnerabilities introduced via aegir@12.0.0
- info: https://snyk.io/package/npm/aegir/12.0.0
  Remediation options (Use arrow keys)
> Upgrade to aegir@12.1.2 (triggers upgrade to debug@3.1.0, growl@1.10.3, tunnel-agent@0.6.0)
  Review issues separately
  Set to ignore for 30 days (updates policy)
  Skip

Integrations

While snyk Command Line Interface is pretty cool, snyk offers much more. It integrates with a wide range of external services.

Currently, snyk supports GitHub, GitHub Enterprise, GitLab and BitBucket Server as Version Control. From PaaS, there is Heroku, CloudFoundry, Pivotal Web Services and IBM Bluemix. There is even support for AWS Lambda (Google Could platform to be supported soon). Notifications about new vulnerabilities can be delivered via Slack or soon as JIRA tickets.

GitHub

Let's closely look how such integration works. We'll use Github as an example. After authenticating with your GitHub account, you will see your project in the Projects section of the Snyk webpage.

snyk-project

It shows all your dependencies and issues by severity. It will not only monitor your master branch, but it will also check all the pull requests to be sure that they do not introduce any new vulnerabilities.

snyk-pr-check

What's even cooler, after testing your project Snyk will check its database whether there are any solutions for the issues found. That is — if it can find any new versions fixing the vulnerabilities found. Or at least, if there are any patches. If there is something, what can be done, it creates automatically a Pull Request, which introduces the fix. How cool is that? You can see example PR here:

snyk-pull-request-github

As with the Wizard, this is unfortunately only available for NPM projects though. Hopefully, other types will also be supported soon.

If your project is free of vulnerabilities, you can even include this nice badge:

snyk-badge

IDE Integration

Having automatic checks for vulnerable dependencies as a part of your Continuous Integration is great. It is, however, even better to discover such vulnerabilities as early as possible. That's in your IDE still during development. When introducing a new dependency, you can check easily directly in your IDEA whether it contains security vulnerabilities with Snyk IDEA plugin.

Detecting vulnerable dependencies in IntelliJ IDEA

07 June, 2019#Security#IDEA

How to detect third party libraries with security vulnerabilities directly in IntelliJ IDEA.

Conclusion

Making sure your dependencies are up to date and contain no security vulnerabilities is very important and often overlooked. Snyk is a cool tool, which can help you with that. It is in some aspects similar to OWASP Dependency-Check described in the previous article. It has some nice features on top of what Dependency Check offers. Integration with a wide range of cloud services and version control systems. What's great is that it not only finds the vulnerabilities but directly offers means to fix them in the form of updates or patches. Hell, it can even automatically create a Pull Request for that. The downside is that many of the cool features are currently available just for node dependencies and not others like Java. We can only hope this will change soon.

 


Presentation assistant

This is a simple plugin, which shows a pop-up notification every time you perform an action in IDEA. It shows what action was performed and what is the keyboard shortcut associated with it.

Presentation Assistant

This can be very useful when presenting, during screencasts, pair programming and so on. Especially when using keyboard shortcuts, it can be difficult to follow what's happening without this plugin.

 

Extra icons

This is basically an icon pack, which provides new icons for special files such as Travis configuration, package.json, lint config, and many more.

This can be very useful as you can immediately recognize these special files, and your project is, therefore, much easier to navigate. For example, package.json is a json file, but it is much more useful to have a special icon for it as it is an important file for npm projects.

Extra Icons


Grazie

UPDATE: As of 2020.1, Grazie is bundled by default in IntelliJ IDEA.

IntelliJ IDEA has a basic spelling checker, which allows you to detect some typos, but it is not much useful on top of that. It is definitely not a replacement for dedicated grammar checking services such as Grammarly.

Fortunately, there is a plugin called Grazie, which enhances the basic spell checker with a lot of useful features. It also detects more advanced issues, such as incorrect grammar. It works completely offline, as well.

Grazie IntelliJ IDEA plugin example

It allows you to enable checking of commit messages as well. You can learn more in the blog post Meet Grazie: the ultimate spelling, grammar, and style checker for IntelliJ IDEA.


InnerBuilder

Creating complex objects can be hard. Of course, you can stick with a simple POJO with a whole bunch of setters, but you cannot enforce that created objects have all the required fields and are not used in an incomplete state. To solve this, you need constructors. With more complex objects, this can lead to a whole bunch of telescopic constructors with many parameters. In these cases, using a builder is much more appropriate.

This plugin can automatically generate a builder for you from a POJO.

InnerBuilder plugin for IntelliJ IDEA


Git Toolbox

https://github.com/zielu/GitToolBox/wiki/Manual

 

Manual

EditNew Page

Lukasz Zielinski edited this page 25 days ago · 19 revisions

Table of contents

  1. Features

  2. Manual installation

  3. Configuration

    1. General configuration

    2. Global

      1. Overrides
    3. Project

      1. Defaults for new project

      2. Project general configuration

        1. Parent branch mode
      3. Automatic fetch exclusions

  4. FAQ

Features

  1. Git status display
  2. Not committed changes tracker
  3. Git blame display
  4. Automatic fetch
  5. Behind tracker
  6. Commit dialog branch completion
  7. Commit dialog gitmoji completion
  8. Recent branches switcher
  9. Git Extender integration

 

Although git support in IntelliJ is already pretty good, this plugin still offers some useful features on top of that.

You can easily see how many commits is your branch ahead/behind. You can configure automatic fetch with configurable frequency. You can automatically see inline blame information on your current line.

Git Toolbox

 


Multirun

IDEA does support running multiple tasks (configurations) at once, however, this feature is currently very limited.

Multirun plugin does support running multiple configurations at once with much more sophisticated options. This can be very useful when running both Backend and Frontend at once, testing multiple modules, and so on.

Multirun

 


Sensei by Secure Code Warrior®

 

Secure Code Warrior®

Install to IDE

Compatible with IntelliJ IDEA, Android Studio

    Overview

 

Screenshot 1

Screenshot 2

Screenshot 2

 

Sensei IntelliJ plugin helps you find and fix bad coding patterns dynamically by automatically highlighting violations as you write code and suggesting fixes that can be applied with a mouse click.

 

Wipe out recurring anti-patterns in your code. Create Sensei recipes which detect the anti-patterns and can automatically rewrite the code using your preferred coding pattern. Making it easy to proactively improve your code quality.

 

The recipes you create can be stored in your project and added to version control, making it easy to share recipes with your team. You can gradually build team-specific coding guidelines.

 

Repeated use in the IDE helps build muscle memory so you stop making the same mistakes and move from detecting and fixing issues, to actively preventing them from entering your code in the first place.

 

*Additional Benefits include:*

  • Dynamically spot low-quality code patterns as you write code
  • Automate code changes to implement your coding patterns
  • Codify your coding standards
  • No waiting for a static analysis tool report, analyze your code automatically on the fly
  • Share your coding knowledge among teams
  • Create recipes to recommend best practices
  • Increase the consistency of your coding approach
  • Link to any training material accessible online from the code in the IDE itself
  • Link back to Secure Code Warrior learning platform material using categories
  • Works with Java
  • Create recipes for instant feedback against common potential bugs
  • Mitigate security vulnerabilities by creating rules that detect vulnerable code and provide an automated fix to a secure implementation
  • Enforce coding patterns to improve the performance of your software
  • Help weed out bad practice and common mistakes
  • Create multiple quick-fix actions to automatically resolve any issue depending on your common use cases
  • Preview both the detection and the automated fix against your actual code as you create the recipes
  • Reduce false positives by writing your own recipes which match your environment

 

Other tools might talk about rules, and rulesets, but that seems a little dictatorial to us. We like to think in terms of recipes because you can adjust them, season them, and tweak them for your own taste – using the ingredients you have available. And cookbooks because you’ll build your own collection of favourite recipes.

 

Target bad coding patterns and fix them on the spot. Sensei allows you to create coding recipes that are distributed across teams so you can share coding knowledge, guide best practice and increase consistency. Sensei improves code quality across teams by stopping recurring flaws and makes it easier to implement guidelines, upgrade components or share guidance.

 


 

Hugo Integration

https://gohugo.io/

https://gohugo.io/getting-started/quick-start/

Quick Start

Create a Hugo site using the beautiful Ananke theme.

This quick start uses macOS in the examples. For instructions about how to install Hugo on other operating systems, see install.

It is recommended to have Git installed to run this tutorial.

For other approaches learning Hugo like book or a video tutorial refer to the external learning resources page.

 

"Spoiler

 

Quick Start

Create a Hugo site using the beautiful Ananke theme.

This quick start uses macOS in the examples. For instructions about how to install Hugo on other operating systems, see install.

It is recommended to have Git installed to run this tutorial.

For other approaches learning Hugo like book or a video tutorial refer to the external learning resources page.

Step 1: Install Hugo

Homebrew and MacPorts, package managers for macOS, can be installed from brew.sh or macports.org respectively. See install if you are running Windows etc.

brew install hugo
# or
port install hugo

To verify your new install:

hugo version

Step 2: Create a New Site

hugo new site quickstart

The above will create a new Hugo site in a folder named quickstart.

Step 3: Add a Theme

See themes.gohugo.io for a list of themes to consider. This quickstart uses the beautiful Ananke theme.

First, download the theme from GitHub and add it to your site’s themes directory:

cd quickstart
git init
git submodule add https://github.com/budparr/gohugo-theme-ananke.git themes/ananke

Note for non-git users:

Then, add the theme to the site configuration:

echo 'theme = "ananke"' >> config.toml

Step 4: Add Some Content

You can manually create content files (for example as content/<CATEGORY>/<FILE>.<FORMAT>) and provide metadata in them, however you can use the new command to do a few things for you (like add title and date):

hugo new posts/my-first-post.md

Edit the newly created content file if you want, it will start with something like this:

---
title: "My First Post"
date: 2019-03-26T08:47:11+01:00
draft: true
---

Drafts do not get deployed; once you finish a post, update the header of the post to say draft: false. More info here.

Step 5: Start the Hugo server

Now, start the Hugo server with drafts enabled:

▶ hugo server -D

                   | EN
+------------------+----+
  Pages            | 10
  Paginator pages  |  0
  Non-page files   |  0
  Static files     |  3
  Processed images |  0
  Aliases          |  1
  Sitemaps         |  1
  Cleaned          |  0

Total in 11 ms
Watching for changes in /Users/bep/quickstart/{content,data,layouts,static,themes}
Watching for config changes in /Users/bep/quickstart/config.toml
Environment: "development"
Serving pages from memory
Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
Web Server is available at http://localhost:1313/ (bind address 127.0.0.1)
Press Ctrl+C to stop

Navigate to your new site at http://localhost:1313/.

Feel free to edit or add new content and simply refresh in browser to see changes quickly (You might need to force refresh in webbrowser, something like Ctrl-R usually works).

Step 6: Customize the Theme

Your new site already looks great, but you will want to tweak it a little before you release it to the public.

Site Configuration

Open up config.toml in a text editor:

baseURL = "https://example.org/"
languageCode = "en-us"
title = "My New Hugo Site"
theme = "ananke"

Replace the title above with something more personal. Also, if you already have a domain ready, set the baseURL. Note that this value is not needed when running the local development server.

Tip: Make the changes to the site configuration or any other file in your site while the Hugo server is running, and you will see the changes in the browser right away, though you may need to clear your cache.

For theme specific configuration options, see the theme site.

For further theme customization, see Customize a Theme.

Step 7: Build static pages

It is simple. Just call:

hugo -D

Output will be in ./public/ directory by default (-d/--destination flag to change it, or set publishdir in the config file).

See Also

 

 

 

Screenshot 1

Screenshot 2

Integrates Hugo static web site generator

 


IDE Features Trainer

 

JetBrains s.r.o.

Install to IDE

Compatible with IntelliJ IDEA, Android Studio, AppCode and 4 more

    Overview

    Versions

    Reviews

 

Screenshot 2

Screenshot 1

Screenshot 2

Screenshot 1

Screenshot 2

 

Learn basic shortcuts and essential features interactively – right inside the IDE. No need to read long manuals or look for screencasts. Just install this plugin, and open with the Help | IDE Features Trainer menu item.

 

Found a bug or have a feature to suggest? Welcome to the tracker: https://youtrack.jetbrains.com/issues/IFT

 


 

Key Promoter X

 

Hal's Corner

     

 

Screenshot 1

 

Screenshot 2

 

The Key Promoter X helps you to learn essential shortcuts while you are working. When you use the mouse on a button inside the IDE, the Key Promoter X shows you the keyboard shortcut that you should have used instead. This provides an easy way to learn how to replace tedious mouse work with keyboard keys and helps to transition to a faster, mouse free development. The Key Promoter X tool window shows you a hit-list of the mouse actions you use the most and directly provides you with the shortcut you can use instead. For buttons that don't have a shortcut, the Key Promoter X prompts you with the possibility to directly create one.

Sponsors

CodeStream: Request and perform code reviews from inside your IDE. Review any code, even if it's a work-in-progress that hasn't been committed yet, and use jump-to-definition, your favorite keybindings, and other IDE tools. You can try it for free!

I'd also like to give a big thanks to Daniel Babiak, Stefan Hagen, Joshua Lückers, jlash23, and Mark McCorkle for sponsoring the Key Promoter X with $4 per month. Additionally, I highly appreciate the support from 8 people who give $2/month and 21 others who committed to $1/month.

Become a GitHub Sponsor | Repository | Gitter Chat | LinkedIn | Twitch

 


Node.js

 

JetBrains s.r.o.

Support for Node.js projects.

Features

  • Run Node.js applications from the IDE and debug them using the built-in visual debugger
  • Profile Node.js applications from the IDE
  • Attach debugger to the running Node.js process
  • Run and debug Mocha tests right in the IDE
  • Create new Express projects from the IDE Welcome screen

You can also run and debug Node.js applications in the remote environments such as Docker containers, Vagrant machines and remote servers right from the IDE. For that, please install the Node.js remote interpreters plugin.

Here you can find more information on working with Node.js in the IDE.

 


 

Node.js

 

JetBrains s.r.o.

Features

  • Run Node.js applications from the IDE and debug them using the built-in visual debugger
  • Profile Node.js applications from the IDE
  • Attach debugger to the running Node.js process
  • Run and debug Mocha tests right in the IDE
  • Create new Express projects from the IDE Welcome screen

You can also run and debug Node.js applications in the remote environments such as Docker containers, Vagrant machines and remote servers right from the IDE. For that, please install the Node.js remote interpreters plugin.

Here you can find more information on working with Node.js in the IDE.

 

 


 

CodeGlance

 

Vektah

Compatible with all IntelliJ-based IDEs

     

Screenshot 1

Embeds a code minimap similar to the one found in Sublime into the editor pane. Works with both light and dark themes using your customized colors for syntax highlighting.

 


 

JS GraphQL

 

Jim Kynde Meyer – jimkyndemeyer@gmail.com

Install to IDE

Compatible with all IntelliJ-based IDEs

    Overview

    Versions

    Reviews

Screenshot 1

Screenshot 2

GraphQL language support including tagged template literals in JavaScript and TypeScript.

 

Feature highlights:

  • Schema-aware completion, error highlighting, and documentation
  • Syntax highlighting, code-formatting, folding, commenter, and brace-matching
  • Execute queries and mutations with variables against configurable endpoints
  • Support for multiple schemas using graphql-config

More information about configuring and using the plugin can be found in the documentation.

 


 

Vue.js

 

JetBrains s.r.o.

Install to IDE

Compatible with IntelliJ IDEA, AppCode, CLion and 6 more

    Overview

    Versions

    Reviews

Support for Vue.js projects.

Getting started

  • Open your Vue.js project.
  • Make sure you have Vue.js listed in your project dependencies in package.json and it is installed.
  • Now, you will get Vue-specific code completion, navigation, and many other features in .vue files.

Features

  • Completion for components, directives, props and methods in templates
  • Navigation from the component, directives and event handlers to their definition
  • Coding assistance for different languages inside template, script and style tags in .vue files
  • Extract component and rename component refactorings
  • Collection of code snippets for Vue.js
  • Create new projects from the IDE Welcome screen using Vue CLI

Learn more about Vue.js support in the IDE documentation.

 


 

Scroll to Top