Trailing whitespaces in Eclipse

SonarQube is not only good in telling you that you have a tab indentation problem, but also shows that you have a lot of white spaces that make no sense: trailing white spaces at the end of a line.

How do you get rid of these in Eclipse?

You can configure Eclipse to delete trailing white spaces when you save the file.

Go to Windows -> Preferences -> Javascript -> Editor -> Save Actions

Activate “Perform the selected actions on save” and then “Additional actions” and select “Configure…

Switch to tab “Code Organizing

Confirm your choices by clicking OK. Afterwards the additional actions sections contains your selected save actions:

Every time you now click on save in a Javascript file, these actions will be executed.

Tab and white spaces in Eclipse

When you decide to analyze your source code with a quality tool like SonarQube, sooner or later you will get messages about trailing white spaces or to replace tab with white spaces. The severity is minor and if you now use tab or white space for indentation has no effect whatsoever on my final code. At the end I run grunt and uglify over the code and unnecessary spaces are eliminated. But you may get into other problems with space / tab:

  • Git code review
  • Changes between operating systems (Linux, Windows)
  • Unreadable code when opened in Wordpad / Notepad / vim
  • Tab is normally 4 white spaces, but when defined differently on a computer, code gets really unreadable
  • Angry developers in endless flame wars

Now, what do to when SonarQube is showing minor problems caused by tabs?

This is caused that by default Eclipse is using tabs to indent code. You cannot change the default profile, but you can define your own. To do so, follow these steps:

  1. Create a new profile

    Windows -> Preferences

    Click on New…

    Inform a nice profile name.

  2. Alter indentation

    Change the tab and white space setting.

    Change tab policy to spaces only

To apply the new profile to an already edited file, you can open the file and re-format it (CTRL+SHIT+F). Running a new SonarQube analysis eliminates the white space errors:

NWDS update site setup

NWDS 7.3/7.4 uses the update site concept of Eclipse. This makes it easier to update NWDS as an updated component only needs to be updated at the central update site. No need to distribute a whole NWDS installation package to the developers. The NWDS update site even includes a zip archive of the latest NWDS. That means that the developer does not have to download a NWDS version from SAP Market Place or nwds.sap.com.

  • Official documentation at SAP Help: link
  • Information on SCN: link

There is no separate NWDS 7.4 for NetWeaver Java 7.4. You use the 7.31 version when developing applicaitons for NW 7.4 (SAP Note). To set up an update site, first download the SCA

This SCA contains the archives, but not the tool needed to create the update site. You can download the tool from here: link. This tool is available for Windows.

The tools helps you in extracting the content of the SCA and to configure the update site URL. Afterwards, create an alias in the NW Java HTTP provider and copy the files to the directory specified by the alias.

Example

Set the alias to updatesite_731SP13. This alias points to the directory /home/cesadm/updatesite/731SP13

On the server, the folder contente looks like this:

The total size of the update size here is 2.5 GB. To access the update site via HTTP, inform the complete path to index.html:

http://host.fqdn:port/updatesite_731SP13/index.html

In NWDS, the update site is configured under the available software sites.

Thats it. Now NWDS can be updated from the update site.

Integrating Sonar with Eclipse

Note: 1st published at SCN on 20.4.2012

Note 2: this plugin is not anymore valid. The blog is from 2012!

 

Sonar comes with a killer feature: Eclipse integration. This does not only mean that there is an Eclipse perspective available, but Sonar findings can be used with Mylyn.

Sonar perspective

To make use of the Sonar perspective, the Java project needs to be linked to the Sonar project.

Associate project with Sonar project

Select Sonar project

Now the Eclipse Sonar plugin is reading the identified issues from the Sonar server and integrates them in the editor view:

Clicking on the item in the right opens – like any other Eclipse message – a window and shows possible solutions.

The developer can now act on the violations inside Eclipse without needing to logon to the Sonar server and find there the violations for the source code he is working on.

Mylyn integration

Assume that besides the actual developers you have a code quality or coordination group that analyzes code and uses Sonar for doing so. Now Sonar shows all these violations, errors, bugs and so on, but how to communicate to the developer that he has to act on the violation? Or to guide him with documentation or how to find out why the code is written like it is? Mylyn can be used to enable that kind of collaboration. The Sonar web interface allows creating for every violation to add a comment and assign the violation to a specific user.

Sonar web interface

This review was created with the id #30 assigned to it:

After configuring Mylyn to work in Eclipse together with Sonar, the review shows up under this id in the task list:

Opening the task reveals the tasks information:

Without leaving Eclipse the developer can act on the violations assigned to him. A special feature is the ability to click on the resource link in the tasks and Eclipse will open the corresponding file automatically. The developer can mark the task as solved from within Eclipse and the task will get updated.

Mylyn:

Sonar:

This change is visible immediately and does not require a new code analysis by Sonar.

Using Eclipse brings a major benefit: plugins and an eco-system. Unfortunately, SAP decides to not make their Eclipse plugins easily accessible via the update functionality, but other software vendors are not as restrictive, transforming Eclipse into a productivity tool for Java developers, making it possible to integrate it into a Java developer landscape. One can only hope that ABAP for Eclipse won’t get a second NWDS.

Making NWDS portable

Note: 1st published at SCN on 2.2.2012

Having to deal with several NetWeaver servers and NWDS installations? Want to make NWDS CE 7.1 portable to be more flexible? Read on …

Developing for NetWeaver AS Java means that you have to use the NetWeaver Developer Studio. The recommendation is to have for every NW release the corresponding NWDS version installed on your computer. When you have to take care of developments running on 7.0, 7.1 and 7.2 you end up having 3 NWDS versions installed.

NWDS for NetWeaver 7.0 can be downloaded at SCN. Until recently this was also true for CE. Hope that the CE 7.2 download comes back as it included a NWDS for CE 7.2.

For installing NWDS for CE 7.1 you have to download the installer from SAP.

https://nwds.sap.com/swdc/downloads/updates/netweaver/nwds/ce. (S-User required)

That is not really complicated, but when you are switching workstations, travel or want to share your NWDS installation with a co-worker things get complicated. You have to download NWDS and install it. There are several pitfalls associated with this:

  • Time
  • administrator rights and
  • bandwidth.

Even when you have the time and bandwidth, you still need to have administrator privileges to install NWDS:

The NWDS for CE download link includes a step by step manual for installing NWDS CE. Step 3 is important: “The installer starts SAP NetWeaver Developer Studio automatically and invokes the Eclipse Update Manager where you can select the available NWDS features that you want to add to your installation.

This sentence means that you effectively install a basic Eclipse that needs to download and install all the features that transform Eclipse to NWDS. In my case, the basic NWDS CE 7.1 was roughly about 71 MB in size:

The preferences show that nothing SAP related is available.

No Java, Portal, Web Dynpro Java, DTR or any other feature and perspective related to SAP development available. Without these features you cannot develop for CE. That’s where step 3 comes in. To the 3 above mentioned possible pitfalls you have to add:

  • proxy configuration

If you corporate proxy isn’t permitting Eclipse to download the features you have a useless basic Eclipse installation. NetWeaver AS Java CE comes with an update site feature (http://server:port/updatesite) [1] that has to be configured by the administrator or by using another connection (home, hotel, other computer). After you managed to install NWDS CE 7.1, how do you get that working version portable? After downloading the features you may be tempted to zip the folder and to copy it to an external drive to make it available as a portable NWDS (it is Eclipse and Java after all). If you do so you will notice that the installation folder is still only 71 MB. So: where are the downloaded files? NWDS CE 7.1 won’t copy them to the eclipse/plugins|features folder. They are downloaded to [username]/.eclipse/ com.sap.netweaver.developerstudio.studio_7.1.0_xyz/ configuration/ eclipse

That’s where the downloaded SAP features are. This installation path makes it complicated to use NWDS when the administrator of your company installed the features: your user does not have access to the folder. Copying them from there to the eclipse directory to make Eclipse aware of them won’t work. Inside the above directory is a file called .eclipseextension. That’s the only hint you get from SAP, but it’s enough to identify it as an extension directory. Copy that directory to another location (e.g.: E:\CE). From there the SAP features can be installed.

The manage configuration dialog (Help -> Software Updates lists the features available.

To add the extension directory: open the context menu -> add -> extension location

Select the eclipse folder.

This will install the features. After a restart of NWDS all SAP features are available:

Done? Depends … if you are on Windows 7, of course not. A library will fail to load, so you’ll have to apply the solution provided by Dzintars Vilnis in the SCN forum: http://forums.sdn.sap.com/thread.jspa?threadID=1052737

Edit the configuration file SapNetweaverDeveloperStudio.ini.

-clean

-vm

<path to Java 1.5>\bin\javaw.exe

-showsplash

com.sap.netweaver.developerstudio

–launcher.XXMaxPermSize

256m

-vmargs

-Xmx512m

-Xms128m

-XX:PermSize=32m

-XX:MaxPermSize=256m

-Dfile.encoding=UTF-8

-DJDK.1.5.0_HOME=<path to Java 1.5>

-Dos.name=Windows XP

-Dos.version=5.1

What do you get after all that work? A NWDS for CE 7.1 that can be copied between computers.

Conclusion: that’s a little bit complicated considering the NWDS is Eclipse with features installed from SAP.

[1] Create Your Own Update Site Mirror for the NW Developer Studio http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/30bd4027-cd09-2e10-2583-ca9fd88e32ba

(That one is for 7.3, but the update site concept was already available for 7.1)