Task Scanner for ABAP in Eclipse
In most projects, comments such as TODO, FIXME and XXX are used for planning and defining tasks in the source code of development objects. But it is usually difficult (especially in big projects) to keep track of these tasks and to make sure that they don’t get to production.
Eclipse has a built-in support for tracking these comments and displaying them on the “Tasks” view but unfortunately this only works for programming languages such as Java and C#, but not for ABAP.
There’re different ways to “simulate” this feature through different types of approaches such as using pragma ##TODO to display warning messages as it is written in this blog or to use a dedicated object and the where used list function like its mentioned in this blog.
But what if we had a special plugin made for ABAP which would provide support for managing these tasks and help us keep track on them? Well we have it now.
Let me introduce you to
ABAP Task Scanner – An Open Source Eclipse plugin for managing tasks in ABAP coding
What does it do?
Well as you guessed from the introduction, it searches and lists TODO, FIXME and XXX tasks in ABAP objects. With this plugin you can scan for pretty much any type of ABAP development objects from programs to local classes.
This plugin provides support for TODO Driven Development and makes it easier to track and manage tasks in the source code of ABAP objects.
What are the main features?
As the main features, it provides the possibility to scan and display tasks of individual objects and of all objects in a package including its sub packages depending on the “Deep Scan” option.
You can even scan objects in a Transport request via the “Transport Organizer” view of Eclipse, define and scan custom tags and also scan only objects created by you.
Additionally, if a program is scanned then it will also check all of its includes.
If a class is checked then it will automatically check its local classes (Local Types) and its local Unit tests (Test Classes) as well.
How to use it?
Just click right on the object, go to Task Scanner and then press Scan Source Code. Alternatively, you can also press Ctrl + 9 on the selected object. Then the plugin will scan and display markers for all found tasks on the Problems view with the description of the task, the object name and also the line number. By double clicking on the marker, you can navigate to the exact line where the task was found and see it highlighted.
For scanning objects in a Transport request, open the Transport Organizer view and click right on the Transport request then select Task Scanner and press Scan Source Code. Or you can just press Ctrl + 9 on the selected Transport request. All tasks will be displayed on the Problems view.
In the preferences page, you can change the scan options and parameters for your specific needs. You can include/exclude tags, set a custom text to scan, enable deep scan and scan only objects created by you.
And that’s pretty much it.
There’re only two prerequisites to use the plugin:
- ABAP Development Tools (ADT) must be installed on the Eclipse installation
- Following abapGit Repository must be installed on the target system: https://github.com/AkyshBaymuhammedov/ADT_TODO_Plugin_ABAP.git (Netweaver 7.40 SP08+)
The feature is available in Eclipse Marketplace: https://marketplace.eclipse.org/content/task-scanner-abap-eclipse
I’m planning to further enhance this plugin with new updates, so please let me know if you have any new features or suggestions in mind. 🙂
I hope you find it useful!
This looks good! However, I will stick with ##TODO pragmas because many programmers I'm working with are (unfortunately) still not using Eclipse.
##TODO pragmas generate warnings in both Eclipse & SE80, while a plugin will warn Eclipse users only.
I also like this option much more. It's native and independent from the IDE. It appears as a warning to anyone editing the object and it can be checked with ATC. If SAP doesn't provide a standard alternative, I will keep using it.
This really comes down to each of our own preferences. For me it seems more clean and natural to use comments instead of pragmas because the purpose of pragmas are to hide warnings not to generate new ones. And the warnings for the pragmas do not display the comments directly but only a message which states that the pragma is unknown. If SAP creates these pragmas then this will not work anymore.
I agree that the pragma has the advantage of working in SAP GUI but now more and more eclipse is becoming the main IDE for ABAP and SAP GUI has become more of a secondary environment for most of us to use to compensate some missing features which are missing in ADT for now. One of the great things which I like in Eclipse is that anyone can enhance and contribute to it by adding new features without having to wait for an official support. 🙂
Regarding the ATC check, I was thinking about to "bind" this plugin to the ATC check in Eclipse so that when the ATC check is executed the plugin also gets executed automatically. But this is something for the future version.
When I said from the IDE I didn't mean the advantage of SAP GUI, since it shouldn't be used anymore to program in ABAP except for some cases where there is no alternative. But with open source Eclipse plugins you never know if another developer will have them installed, and they may stop working any moment for newer versions of Eclipse if nobody is maintaining them.
In any case, the biggest issue is that SAP should offer a standard solution embedded in the ADT plugin, but your option is very welcome and I will give it a try.
I like the idea.
I downloaded the code from GitHub to my development system and it activated OK.
Then I installed the ADT plug-in in Eclipse and gave it a go.
Oh dear! A short dump!
The problem is in method GET_OBJECTS_TO_SCAN_OF_TRS of ZCL_AB_CODE_SCANNER. I am really puzzled as to why it activated OK.
I looked it up and MSG is a software partner of SAP. Do you work for MSG or use their software?
Thank you for the bug report! :).
It is very weird that it activated ok even though the object doesn’t exist. I used the /msg/ namespace objects for testing purposes and I got rid of them later. But it looks like I left one out!:D
Nevertheless, the bug is fixed. Please try it again and let me know if it works ok.
Thank you and Best Regards,
I'm also developing an ADT plugin, so I'm fascinated to see your source code. At first glance, I like the output. Bookmarked now to check up on when I return to work.
I uploaded also the Eclipse side code to github. For me the front end part was pretty challenging because of the nature of ABAP objects and lack of proper documentation for ADT. Maybe it could help you or someone else to get an idea in some cases.
Thanks. I think the more of these that are available, the easier it will become for everyone.
Hi Akysh Baymuhammedov
I have installed your plugin by Eclipse marketplace.
If I try to search for ToDo's I am getting following exception:
Could you tell me what is wrong?
I've got the same exception.
Hi! Unfortunately, I'm not working on this project anymore and it seems that they're some amount of people using it or willing to use it, so if you're interested on improving or fixing it then we can discuss about ownership change (for anyone interested).
Hi Akysh Baymuhammedov,
Could you display the questioned items in Eclipse View Task,instead of in Problems,that's a little bit wired...