Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-test-dev] Adoptability testing complete


Hi cdt-test-dev -

Adoptability is complete, and I will submit an update to the Master Test Plan once Bertina/Jeremy's update is available.  In the meantime, I am forwarding this report to the testing community.  Pardon me if it appears too much a hodge-podge of internal reports.

There was some intended overlap between Adoptability and Usability on Solaris.  It was interesting to read Bertina's findings on Usability on Linux sounded similar to mine.

- Brent


Adoptability

Product quality: YELLOW

Large-project users will likely feel that they are using a project that has not been developed with them in mind.  Such users may be able to get stuff to work, but with work-arounds and hacks that do not inspire confidence.  CDT is also very sensitive to the tools on your path and their versions, which diminishes its out-of-the-box experience.  

Cory’s questions from his SRS are answered below.

Purpose
  • Rapid adoption by a large team of developers
  • Standard Makefile-driven project
  • Individual developers focus on subset of larger project

What we did
  • Tested on Solaris (side-focus: Usability on Solaris)
  • Faked project “layers”
  • Faked “project” Makefiles
  • Build a sub-component instead of whole project
  • Tried to load a subset of the entire project
  • Compared against Emacs / Command-line

What I liked
  • C/C++ Projects and Class Outline Views are intuitive navigators.
  • Make Targets View has potential to simplify Makefile interface.
  • Debug Perspective looks mature, feature-laden
  • Solaris GUI (Motif) is better than Emacs

Defects

My top pain points:
  • Expecting tools, and correct versions of tools, to be installed without enforcing these restrictions.  Particularly gdb 5.2.1 (41402) and binutils 2.12?: addr2line, c++filt, nm (25816,36859,41404).  Also, Windows users continue to be confused by the error messages when make or cygwin-make are absent.
  • Better error parsing support is needed (41381,39777, 41386) even for the default "best supported" tool-chain (gcc).  The result is that the error list in the Tasks view is not always as informative as the C-Build log.  In turn the C-Build log is a poorer alternative to simple command-line output (39776, 41382).
  • Users in a large project need to be able to modify the built-in build targets (41393).
  • No cut-and-paste between Eclipse and other apps (41405).

As well, I wrote up Emacs-like Makefile support as an enhancement request (41457).

The complete list of adoptability/usability defects is below:

 
Adoptability and Usability
25816 Pressing "+" in the Navigator on a binary hangs Eclipse [not mine]
36859 Eclipse hands on closing a project with an executable in it [not mine]
39343 Unhelpful error message on importing overlapping project
39615 Untitled dialog ("Browse for folder") on Solaris/Motif
39776 OutOfMemoryError on Select All of large C-Build log
39777 Long build errors are not completely visible
40032 Outline View is drawn twice on opening a source-file
40033 Outline View redrawn unnecessarily on editing
41381 Linker errors unhelpful
41382 C-Build log tabs should be 8 chars wide
41386 Build errors are sorted such that Make errors come first
41387 Hover help on a breakpoint indicates location of first breakpoint in the file
41393 Make Targets view needs the ability to (right-click and) specify the "default" build target.
41404 hangs on close-project, or on expand-objectfile, if missing addr2line
41402 unhelpful error dialog if using old GDB version
41405 no cut-and-paste between Eclipse and other apps
41409 Default fonts in Motif are fixed-width, ugly.
41410 Default Text Font should be fixed-width on Linux-GTK
41414 Usability: Grayed-out text is illegible in Motif
41415 Progress bar for builds is rarely useful
41417 Status bar does not provide make's arguments
41487 Deselecting project in "Generic Source Locations" in New Debug config caused crash
41457 Equal or better Emacs' Makefile support



Comparative Functionality:

Emacs has better Makefile support (color-coding, navigation, specifying build targets).  I've raised an enhancement request to bring CDT up to its level (41457).
Error parsing is poor for link errors.  Make errors are frequent.  User’s reaction is to go to the build-log, which is not as good as a command-line log  (39776, 41382).
Emacs also has a gdb interface (untested), but Eclipse’s GUI interface to gdb (stack-traces, data, breakpoints) is pretty nice once properly configured (version of GDB).  Initial reaction is positive, but some bugs appear (41387, 41487).

Build Targets

“How does a developer build only his component of a large project?”  Probably the easiest way is to load in the entire project, turn off automatic builds, and use the Make Targets View to create and build targets in  your component's Makefile.  This could be better supported (41393), since you cannot use any of the other ways to build your desired target.  Alternatively, the user can load sub-component projects instead (see below), but this is less recommendable.

“How does a developer change from building Component1 library to Component1 executable?”  If the stub executable’s code is uncontrolled but in the same component, the user will likely have to change the controlled Makefile (and the the Make Targets View).  If the stub executable is in a different (uncontrolled) component, the user needs to write an entire Makefile, and set Make Targets, and Project dependencies, but the library’s files are unchanged.
When adopting an unmanaged Makefile, the ability to modify the default build targets (Ctrl-B, “make all”, “make clean all”) is extremely important; “all” and “clean” should appear as default Make Targets in that view (41393).
At present, the only purpose of  specifying Project References seems to be for “Rebuild All” purposes.  


Loading sub-component projects

“If the application is large, but the user’s development environment is a small subset, can they load just the subset?”  Yes, the user can use a separate workspace for the subset and for the entire project, each pointing to different directories within the same project structure.  This is not an officially supported workflow, but rather a work-around of Eclipse limitations on resource hierarchy.  It feels like a work-around (39343) and feels ugly and risky:  switch workspaces and you lose your breakpoints, make targets view, other info.  You also leave extraneous .cdtproject and .project files (and possibly other artifacts) around, with potential for side-effects in source-control or in switching workspace.

Multiple target environments

“How does the user build for VxWorks? As a test (stub) executable?”  
Remote target debugging not tested.  Building on various targets is likely solvable with correct Makefile configuration.  


Source control

A gray area requiring more time, particularly after 1.2 features (search databases, generated Makefiles) are finished.
Source-controlling .cdtproject and .project files is probably OK, not contentious.

Attachment: Adoptability.xls
Description: MS-Excel spreadsheet


Back to the top