Webinar Recording: PHP Annotations: They exist!

The recording of our June 11th webinar, PHP Annotations: They exist! with Rafael Dohms, is available on JetBrains YouTube channel.

Register now for our free webinar.This session shows you who is doing what with annotations, and will give you some ideas on how to use the existing tools in your own projects to keep life simple. Developers, architects and anyone responsible for the technical direction of an application should view this session.

Rafael’s slides are available on Slideshare.

Continue reading

Posted in Screencast, Webinar | Tagged , , , , | Leave a comment

Webinar Recording and Q&A: .NET Code Coverage for Continuous Integration using TeamCity and dotCover

The recording of our June 10th webinar with Maarten Balliauw, .NET Code Coverage for Continuous Integration using TeamCity and dotCover, is now available on JetBrains YouTube Channel and slides on slideshare.

In this webinar we use dotCover to collect code coverage information while running tests in our CI process. We can see how we can configure code coverage and how we can use the TeamCity Visual Studio plugin to download the coverage snapshot generated on the build server and inspect it using dotCover on a developer machine.

How much of our code is being covered by our unit tests? Are there areas we are not testing? By capturing code coverage data during a test run, we can analyze which areas of our applications are well-tested and which ones require additional tests to be written. And where better to capture code coverage information than on our build server? Find out in this webinar.

Below are select questions and answers from our webinar:

Q: Can we use MStest with TeamCity and also get code coverage with dotCover?

A: Yes, test runner type and .NET coverage tool can be chosen in TeamCity Build Configuration Settings tab. Please check the following settings:
MSTest and dotCover with TeamCity

Q: Is it possible to use dotCover on TeamCity with xUnit.net tests?

A: Yes, it is possible. If you are using xUnit and you want to capture code coverage, you can run dotCover from the command line and import the data into TeamCity by using a service message. The process details are described by Maarten during the webinar (starting from 24th minute).

Maarten BalliauwMaarten Balliauw is a Technical Evangelist at JetBrains. His interests are all web: ASP.NET MVC, PHP and Windows Azure. He’s a Microsoft Most Valuable Professional (MVP) for Windows Azure and an ASPInsider. He has published many articles in both PHP and .NET literature such as MSDN magazine and PHP architect. Maarten is a frequent speaker at various national and international events such as MIX (Las Vegas), TechDays, DPC and others.
Posted in Screencast, Webinar | Tagged , , , , , , , | Leave a comment

0xDBE—Brand New IDE for DBAs and SQL Developers

Today we have some super exciting news to share with you.

Since its inception JetBrains has focused on making software development a more productive and enjoyable experience by providing developers with top-notch tools. Our products support Java, .NET, PHP, Python, Ruby, Objective-C and many other languages and platforms.

Today, JetBrains expands this list to databases. Meet 0xDBE—our brand new IDE for DBAs and SQL developers.

For years, we’ve been developing a range of database tools as part of our family of IDEs. Now these tools are becoming a separate IDE: for DBAs, SQL developers and just about everyone who works with databases or SQL files.

Though 0xDBE is still under heavy development, today we’re happy to announce the opening of it’s private EAP (Early Access Program), so you have a chance to become an early 0xDBE adopter.

For more details about 0xDBE see http://jetbrains.com/dbe/

To gain access to early builds of 0xDBE, please sign up for its private EAP: http://jetbrains.com/dbe/eap/

Develop with Pleasure!
0xDBE Team

Posted in New Products | Tagged | 27 Comments

Webinar Recording: Making YouTrack Follow Your Process

The recording of our June 4th webinar with Dmitri Nesteruk, Making YouTrack Follow Your Process, is now available on JetBrains YouTube Channel.

YouTrack Logo

In this webinar, we shall see the ways YouTrack allows the issue tracking process to be customized so as to follow a defined process. We shall discuss the ways in process automation is supported out of the box as well as the ways in which users can define their own custom process scenarios.

Thanks everyone who attended, hope you enjoyed the show an learned something new.

We did our best to cover all the questions during the webinar and would like to share our of Questions & Answers session, providing more details and useful materials.

Continue reading

Posted in Screencast, Webinar | Tagged , , , | Leave a comment

Live Webinar: Merging Refactored Code – ReSharper Meets SemanticMerge, June 17th

Join us Tuesday, June 17th, 16:00 – 17:00 CEST (9:00 – 10:00 AM EDT) for our free webinar, Merging Refactored Code: ReSharper Meets SemanticMerge.


In this webinar, Matt Ellis (JetBrains) will be hosting Pablo Santos (SemanticMerge) who will run through a number of refactoring examples, from the seemingly trivial (yet essential) to complex structure modification scenarios, and demonstrate how to do the refactor with ReSharper and later get it merged with Semantic.

Pablo will talk about the challenges of merging complex refactorings and demonstrate how SemanticMerge simplifies it, parsing the code into a syntax tree then reasoning about it as code rather than text (or text with heuristics), and merges accordingly.

If you’ve ever wanted to know more about ReSharper’s many refactoring capabilities and new tools designed to make merging complex refactorings a breeze, don’t miss this webinar.

Space is limited, please register now. There will be an opportunity to ask questions during the webinar.

About the Presenter:

Pablo SantosPablo Santos is the founder at Codice Software, the company behind Plastic SCM and SemanticMerge. Codice started in 2005 and since then Pablo played different roles ranging from core engineering to marketing, business development, advertising and sales operations. Nowadays he plays a dual role as lead of software engineering and product manager for both Semantic and Plastic.

Keep up with ReSharper news on our .NET Tools Blog and on Twitter @ReSharper.

Posted in Events, Webinar | Tagged , , , | Leave a comment

Live Webinar: PHP Annotations – They exist! Join us June 11th.

Join us Wednesday, June 11th, 4:00 – 5:00 PM CEST (10:00 – 11:00 AM EDT) for our free webinar with Rafael Dohms, PHP Annotations: They exist!

Register now for our free webinar.

Annotations are more than PHPDoc comments, they’re a fully-featured way of including additional information alongside your code. We might have rejected an RFC to add support into the PHP core, but the community has embraced this tool anyway!

This session shows you who is doing what with annotations, and will give you some ideas on how to use the existing tools in your own projects to keep life simple. Developers, architects and anyone responsible for the technical direction of an application should attend this session.

This webinar is geared towards developers of different proficiency and there will be an opportunity to ask questions. Space is limited; please register now.

Rafael DohmsRafael Dohms is an experienced PHP Developer, Evangelist, Speaker, and Contributor. During his years of experience, he has become an active member of the community and founded three user groups. He moved to the Netherlands in search of new challenges and to share his passion for code quality and innovation. In his spare time, he also helps manage the AmsterdamPHP User Group, amongst other projects.

Keep up with the latest PhpStorm news on PhpStorm Blog and on Twitter @PhpStorm.

Posted in Webinar | Tagged , , , | 2 Comments

Webinar Recording and Q&A: High-Performance Computing with C++

The recording of our May 29th webinar with Dmitri Nesteruk, High-Performance Computing with C++, is now available on JetBrains YouTube Channel.

Languages such as JavaScript may receive a lot of hype nowadays, but for high-performance, close-to-the-metal computing, C++ is still king. This webinar takes you on a tour of the HPC universe, with a focus on parallelism; be it instruction-level (SIMD), data-level, task-based (multithreading, OpenMP), or cluster-based (MPI).

We also discuss how specific hardware can significantly accelerate computation by looking at two such technologies: NVIDIA CUDA and Intel Xeon Phi. (Some scarier tech such as FPGAs is also mentioned). The slides used in the webinar are available here.

We received plenty of questions during the webinar and we’d like to use this opportunity to highlight some of them here as well as those we didn’t have a chance to answer during the webinar. Please find the questions below with answers by presenter, Dmitri Nesteruk.

Continue reading

Posted in Screencast, Webinar | Tagged , , , , , , , , , | Leave a comment

Webinar Recording: Spec BDD with PhpStorm and PhpSpec

The recording of our May 27th webinar, Spec BDD with PhpStorm and PhpSpec with Kacper Gunia, is available on JetBrains YouTube channel.

Useful links from the webinar:

Continue reading

Posted in Webinar | Tagged , , , , | Leave a comment

Nitra goes Open Source!

We’ve been rather quiet about Nitra since our introductory blog post, back in November of last year. But we haven’t been sitting still. We’ve been busy building the foundations to a project that we want to see as the basis for a lot of future work here at JetBrains. Now that we feel we’ve reached a minimum viable feature set, as well as a good architectural base for future development, we’re very happy to take the next steps on our roadmap, and release Nitra as an Open Source project.

The source is currently available on GitHub, released under the Simplified BSD license.

What is Nitra?

As a reminder, Nitra is a framework for the next generation of language tooling.

Traditionally, languages don’t ship with any kind of IDE support. It is up to tools vendors to provide syntax highlighting, outlining, code completion, navigation, find usages, refactorings and so on. Some of these features, such as syntax highlighting and outlining can be crudely implemented in a manner similar to regular expressions, but the more powerful features require a deeper understanding of the language.

Ideally, a language service should be able to parse a file into a form that it can reason about – an abstract syntax tree (AST). With such a deep knowledge of the underlying language, it knows what nodes in the tree are keywords for syntax highlighting, knows where blocks start and end for outlining, can pull out identifiers and their usages for code completion and navigation. Manipulating the tree can reformat or even rewrite the source code, enabling refactorings.

This is what JetBrains does right now, and, as a company, we’re very good at it – ReSharper ships with parsers and ASTs for approximately 20 file formats, and the IntelliJ ecosystem supports many more. As one product manager put it: “We’re JetBrains. We write parsers for breakfast”. But it’s busy work.

Nitra is designed to take away this busy work, allowing us to support more languages, quicker, and to focus on the higher levels in the stack of language tooling, such as analyses and quick fixes.

Nitra is a language for describing grammars, and the abstract syntax trees to represent them. It is also a build tool to compile the grammars into parsers, and generate the classes required to represent and navigate the AST. And it’s also a set of language services that use the grammar to provide automatic syntax highlighting, outlining and brace matching.

What’s more, Nitra’s grammars are designed to be extensible and reusable. A simple example would be the base building block grammars that ship with Nitra, such as Whitespaces and CStyleComments. Both clearly useful in many languages, and can be simply included and reused in a larger grammar.

A better example would be HTML, which allows for embedded “islands” of JavaScript and CSS. The HTML grammar could include the JavaScript and CSS grammars and allow full parsing of a typical HTML file. Take it further, and look at .net’s Razor web templating engine. This is a server-side HTML file that includes not only JavaScript and CSS, but also C#. Build a grammar that includes HTML, JS, CSS and C#, and you’ve got a parser and an AST that can handle Razor files.

Read Hadi’s Introduction to Nitra post to see an example grammar, and check out the wiki for documentation, especially for the syntax of the grammars.

Current Status

While we’re making Nitra Open Source today, this should not be considered an end-user preview. It’s a low-level language toolkit, and if you want to use it, expect to get your hands dirty. Here’s what it currently supports:

  1. Grammars to define lexer-less parsers and ASTs that can be extended at compile time or runtime, supporting composition of languages, or languages with extensible syntax, such as Nemerle
  2. A command line tool to compile grammars into an assembly containing the parser and the AST classes (grammars can also be compiled inside Visual Studio)
  3. A Windows application to load and test grammars
  4. A Visual Studio language service that uses Nitra to parse files and provide automatic syntax highlighting, outlining and brace matching. Current work is to increase the automatic support here to include go to declarations, find usages and rename refactorings

But this is still a work in progress. There are things that don’t yet work. The source reflects this in places, with incomplete grammars (for example, C++) and some references to internal test tools and file locations that aren’t included in the source code. This just reflects the status of the code as an active project, and will get cleaned up over time.

Building Nitra

Before you can use Nitra, you need to build it. Full instructions for building Nitra can be found here. Here’s an outline:

  1. Install Nemerle. Nitra is built by the Nemerle team, in Nemerle, so requires Nemerle in order to compile. You can download the latest version from the Nemerle site (there currently isn’t a VS2013 build that supports Nitra. One will be made available shortly. In the meantime, you need to use VS2012)
  2. Once installed, you need to open a command prompt in the Nitra folder, and run “BuildBoot.cmd”. This bootstraps the build process, building the boot versions of the assemblies required by the main product in order to build. you only need to do this once.
  3. Build the Nitra.sln solution in Visual Studio
  4. Set the environment “NitraPath” to point to the root of the source distribution. The Visual Studio integration uses this to locate the “NitraGlobalConfig.xml” file which tells it which grammars to load

Using Nitra

The solution contains several test applications you can use to give Nitra a go.

Firstly, there is Nitra.Visualizer, which is a Windows application that is pre-configured to load test files from the Nitra\Tests\Visualizer folder. It will use the grammars defined in the Nitra solution to load test files and compare the output with a known-good “gold” file. If the output is different, the test fails, and you can see the differences in the “Diff” tab. If the test succeeds, the file is displayed in the right hand pane, with syntax highlighting and outlining applied. You can also navigate the AST under the “Reflection” tab, and see how Nitra will output it in a pretty-printed version.

Nitra.Visualiser showing a C# file

There are several different tests and languages supported here, including C# and JSON, and a calculator DSL, too.

In fact, there’s also another sample app that uses the calculator DSL directly – Sample.Calc.App. This is a console application written in Nemerle that references the calculator grammar and parses input from the command line. It then pretty prints the expression you enter, outputs it with syntax highlighting, and evaluates it, using a Value() method that is defined as part of the grammar.

Calculator sample app

And of course, there’s the Visual Studio integration. Once this project builds, you’ll get a Nitra.VisualStudio.vsix file in the bin\Debug folder. Double clicking on this will install it into Visual Studio (you can also set up the debugging command line so you can just F5 the project). Don’t forget to set the “NitraPath” environment variable as mentioned above. The extension adds support for *.json files, and will parse *.csn files as C#, but most usefully, it will parse, syntax highlight and add outlining and brace matching for *.nitra grammar files.


There are other sample projects in the solution, and you can also run the test suite with the “run.cmd” batch file in the Nitra\Tests folder.

Why Open Source?

The plan has always been to release Nitra as Open Source. After all, it’s written in Nemerle, by the Nemerle team, and Nemerle is Open Source. However, we wanted to wait until we had a core platform that was ready to be opened up further. We feel that we have that now, so here we are.

And of course, we’re accepting contributions! If you’d like to get involved and help build the next generation of language tooling, take a look, raise issues, send pull requests.

Please let us know what you think!

Posted in New Products, News | Tagged , | 21 Comments

Live Webinar: Embracing AppCode 3.0, June 12th

Join us Thursday, June 12th, 11:00 AM – 12:00 PM CEST (9:00 AM – 10:00 AM GMT) for a free webinar, Embracing AppCode 3.0 with Rafał Legiędź.

AppCode Logo

AppCode is designed to ease the everyday routine for developers who are facing the challenges of Objective-C development as they build apps for Apple devices such as Macs, iPhones and iPads.

During this webinar we’ll be going through a simple app creation showing AppCode awesomeness by the way. Starting with all the “standard” magic like code assistance, code generation and refactoring features, through debugging and integrations and finally ending with test driven development and CocoaPods support. A demo will also highlight features that are available in new AppCode 3.0.

Space is limited, please register now.

About the Presenter:

Rafał LegiędźRafał Legiędź works as a principal software developer for ABB Poland. He believes that being pragmatic in our field is very helpful and proves that by switching technologies he uses whenever there is a need or an opportunity to learn new concepts. Started with .NET back-end solutions, he quickly became a web guy using technologies of few sorts and now he develops enterprise iOS and javascript apps

Keep up with the latest AppCode news on AppCode Blog and on Twitter @AppCode.

Posted in Events, Webinar | Tagged , , , , | Leave a comment