TweetFollow Us on Twitter

SoftPolish Review
Volume Number:12
Issue Number:12
Column Tag:Tools Of The Trade

SoftPolish

By Cliff McCollum, Victoria, British Columbia, Canada

“It Doesn’t Suck Either”

Bare Bones Software is best known for its powerful text editor BBEdit. Anyone who has been to Apple’s Worldwide Developer Conference has seen their famous BBEdit T-shirts that proclaim “It Doesn’t Suck.” At the next WWDC, they should distribute SoftPolish T-shirts that read “It Doesn’t Suck Either.” Bare Bones Software describes SoftPolish as “a tool that helps software developers deliver clean and consistent applications.” It easily delivers on this promise, and is a nice example of a program that focuses on doing one thing and doing it well. SoftPolish quickly locates many of the common, and some of the uncommon, easily fixed problems that can turn into costly mistakes if they remain in the final shipping product.

A complete installation of SoftPolish requires a little under one megabyte on your hard drive, and prefers 1300k of RAM to operate. Version 1.2 is not PowerPC native, which may give you time for a few extra walks around the cubicles. On a 7200/90, a typical one megabyte application took about a minute to test. The more errors a file contains, the longer the test will take.

I tested SoftPolish initially on some of my own projects. I found it quite surprising that there were a number of not so subtle errors in each application. The most common thing SoftPolish found was my incorrect placement and sizing of dialog buttons. I consistently put them too close to my dialog’s borders, and usually made them too small. SoftPolish also pointed out my numerous typos in menus, strings, and dialogs. Just for fun, I tested Excel 5. The check itself took three-and-a-half minutes, and found many fascinating typos, including “itmes,” “returnd,” “seleciton,” and “measurment.” Acquiring SoftPolish has permitted me to spend more time testing program code and less time inspecting interfaces.

Learning the Ropes

The well written documentation covers all of the important aspects of the program. The documentation starts with a discussion of how to use SoftPolish as part of a formal quality assurance program, and then moves on to discuss the program’s capabilities and how they are used. A short, but complete tutorial walks you through each SoftPolish function by testing a small and thoroughly troubled program supplied on the SoftPolish CD-ROM. There is Technical Support provided via Email, should you find a need for it.

The SoftPolish Interface

You can almost completely control SoftPolish from a simple six button window called the SoftPolish Navigator (see Figure 1). The first five buttons in this window activate the SoftPolish functions in the order they are typically used. The sixth button displays on-line help. The only SoftPolish function not represented in this window is “List Resource Strings.” This lists all the strings found in a files resource fork - including those found in dialog boxes, and Apple Event terminology (“aete”) resources.

Figure 1. The SoftPolish Navigator.

Bare Bones has made SoftPolish quick and easy to use. It is unlikely that you will ever need to do more than launch SoftPolish, click a few buttons, view the resulting report, and then return to your development environment. Because SoftPolish is so quick and easy, you can include an analysis of your application in even the tightest development schedules.

Diagnostics

The four groups of diagnostics that SoftPolish performs are user interface, resource validity, spelling checks, and cleanup suggestions. In total, there are 18 individual tests that you turn on or off as your needs dictate.

SoftPolish can only check those aspects of a program that are visible in the program’s resources. It cannot check for bugs in your code, or detect possible problems caused by the program at runtime. For this reason, SoftPolish is most effective if your code uses unmodified resources directly from a resource file.

User Interface

This group tests the elements visible to users.

• Duplicate or misused menu command key equivalents.

• Improperly capitalized menus, menu items, window names, and control titles.

• Interface elements that will not fit within a compact Mac’s 9” screen. [Although this test may be somewhat outdated. - err]

• Text elements that may not be large enough to display their contents.

• Dialog items check for items outside of the dialog’s display area, overlapping items, items larger or smaller than Apple recommends, and items that are too close to a dialog’s border.

• Improper use of non-curly quote marks and apostrophes.

• Incorrect use of three periods in place of the ellipsis character.

• Duplicate spacing between words or sentences.

Some of the warnings generated from these tests can be misleading - for example, the suggestion that all static text boxes must be a multiple of 16 pixels tall. However, these warnings can still prove very useful in finding problems that you may not have otherwise noticed.

Resource Validity

This group tests for things that are not usually visible to users, but that are required to ensure proper operation.

• Correct use of resource types. For example, if you identify your target file as being a non-Apple file, SoftPolish will flag improper use of resource types reserved by Apple Computer.

• Internal consistency checks, such as a “vers” resource that contains inconsistent version data.

• Compatibility checks identify incomplete icon families, SIZE bits set to impossible combinations, color PICTs (these may not display properly on B&W Macs) and other similar situations.

• Size checks verify certain standardized resources for correct size. For example, all ICONs should contain 128 bytes.

• Properly linked resource checks that all referenced resources, such as DITLs referenced from DLOGs, are present. It also warns of orphaned resources, like a “wctb” resource without a corresponding “WIND”.

Resource Validity warnings are critically important. Unlike errors from the other groups that flag cosmetic problems, resource errors can result in improper program execution or even crashing.

Spelling

SoftPolish can verify spelling both in a files resource fork, and in its file name. SoftPolish ships with pre-built dictionaries for US English, British English, Dutch, French, and Spanish. In addition, SoftPolish can automatically build Custom dictionaries using your target as a model. (See the section titled “Building a User Dictionary.”) You can also build custom dictionaries using BBEdit or another text editor.

Suggest Cleanup

The Suggest Cleanup group reports on many common situations that are not incorrect, but tend to lower the quality of a product.

• Empty resource forks.

• Unwanted resource types. Use this test to locate resources that should be removed before your final product ships. Template (“TMPL”) resources are a common unwanted type.

• Code resources that contain debugger calls or MacsBug names (only checks 68k code).

Suggest Cleanup will also display every “vers” resources it finds, giving you an opportunity to verify that they are correct.

Using SoftPolish

Testing a product with SoftPolish involves five steps. Some of these will be carried out repeatedly during development. Others may be used only once - right before freezing a shipping version. To give you a feel for how to use SoftPolish, I will describe each step you would take to test a fictitious application named “Super Whizzy Write.” If you want to follow along, a demo version of SoftPolish is available from Bare Bones Software’s web page at

<ftp://ftp.barebones.com/pub/demos/SoftPolish_1.2_Demo.hqx>.

Choosing a Target

SoftPolish can scan a single file, the contents of a folder, or even an entire disk (though you’d have to be pretty patient with the last one.) Clicking the Choose Target button in the SoftPolish Navigator window brings up a standard open dialog box. Locate “Super Whizzy Write” on your hard drive, and click OK (if you are actually following along, you’ll have to pick some other application.) With a target chosen, your next step is to build a user dictionary.

Building a User Dictionary

In order to avoid flagging correctly spelled words as misspelled, Bare Bones recommends that you build a user dictionary before conducting a complete scan. By building the user dictionary, you specify the correct spellings for words that are unique to your application. SoftPolish then uses this dictionary while analyzing your application.

Click the Build User Dictionary button to create a custom dictionary for Super Whizzy Write. In the Build User Dictionary window, the Build button locates and displays the first unknown word in your program. Click the Learn button if you want to add the word to your dictionary, or the Skip button if you do not want to add the word. SoftPolish moves through all the unrecognized words while you choose to learn or skip each one. A log of all the words added to the user dictionary is kept in case you require it for auditing purposes.

Scanning the Target

Once your user dictionary is built, you are ready to begin scanning for errors.

As it scans the target(s), SoftPolish produces a problem report. You can format the body of each problem report in one of two ways, “by file” or “by problem.” You must set the desired report format in the SoftPolish preferences dialog before you begin a scan. For this example, if you want to keep all the test results for a single file grouped together, you should select “by file.” If you wanted to keep the results from each individual test grouped together, you would choose “by problem.”

Clicking the Scan Target button displays the following window (see Figure 2). In this window you can turn on or off each of the tests discussed in the previous section. Once you have selected the tests of interest, click the Scan button.

Figure 2. The Scan Target window allows you
to turn individual tests on or off.

SoftPolish scans the target file(s) and produces a problem report. A typical report is quite long, but Bare Bones has tried to format them for easy reading. The start of each report contains a summary of the tests performed during that scan, followed by a listing of the problems found. I have included a sample problem report in the next section. You can print out the completed report, save it to disk, or edit it directly in SoftPolish.

Correcting Spelling

Although scanning Super Whizzy Write highlighted any spelling errors present, it made no attempt to fix them. To begin spelling corrections, you must click the Correct Spelling button in the Navigator window. Spelling error correction in SoftPolish works as it does in most word processors. Each suspected error is displayed, and alternate correct spellings are suggested. Then you are asked to either correct the word, ignore it, or add it to your User Dictionary.

Cleaning Up

You perform many of the final steps required before freezing each version of your program in the Clean Up window.

• Set the modification and creation dates for all files and folders to matching values.

• Remove empty resource forks.

• Check for debug traps and debugger names in the code (68k code only).

• List all version resources.

• Remove any user defined resource types.

You can use this last feature to quickly zap unwanted template or debugging resources left behind from development.

SoftPolish Reports

It proved difficult to locate a single application that could generate a broad range of SoftPolish errors. Instead, the following example was created by taking the most interesting parts from four actual reports. I tried to include one occurrence of each of the most typical warnings SoftPolish generates. The preamble indicating which SoftPolish tests are under way was removed, and the name of the application is changed to protect the innocent.

Example SoftPolish Report

USER INTERFACE CHECK:

File: “Super Whizzy Write”
Created:Thu, Mar 14, 1996, 9:01 PM
Modified: Wed, Mar 20, 1996, 5:21 PM
Version:2.0.8
 •• Application BNDL signature “SpWW” does not match creator
 “CmWW”

 ALRT 900 “memory shortage” 
 •• DITL 900 item 2 is within 6 pixels of the edge of the 
 window

 CNTL 300 “Scroll Bar” 
 •• Scroll bar should be at least 16 pixels wide

 CNTL 500 “Find Button” 
 •• Button should be no more than 20 pixels tall
 Find
  • Space is crowded for the text; make 13 pixel(s) wider

 DITL 131 <Item #8, picture> “help” 
 •• This item overlaps another dialog item

 DITL 251 <Item #2, static text> “error1” 
 Couldn’t complete the last command because error “^0” 
 occurred.
 •• Should this be a real apostrophe (’)?
 •• Should these be real quotation marks (“ or ”)?

 DITL 400 <Item #13, button> “Preferences” 
 OK
 •• Should lower-case be used here?
 OK
  • Space is crowded for the text; make 11 pixel(s) wider

 DITL 414 <Item #1, button> “Rename File” 
 Rename file
 •• Should the word start with a capital letter?

  MENU 1 <Item #1> “Apple” 
 About Super Whizzy Write 
 •• Should lower-case be used here?

 MENU 2 <Item #4> “File” 
 •• Add Attachment  (File Menu) Command-A should be used 
 only for Select All (Edit Menu)

 MENU 2 <Item #5> “File” 
  • Warning: Get Info (File Menu) Command-I is often used 
 for Italic

 PICT 4 
 •• Resource ID numbers in the range 0 to 127 are reserved 
 for use in the System file 
  • Warning: color picture will not display on SE or other 
 older machines

 STR# 700 <Item #2> “Progress titles” 
 Searching...
 •• Should use an ellipsis ( ) instead of multiple periods

RESOURCE VALIDITY CHECK:

File: “Super Whizzy Write”
Created:Thu, Mar 14, 1996, 9:01 PM
Modified: Wed, Mar 20, 1996, 5:21 PM
Version:2.0.8
 •• Should be removed from file:
  TMPL   128 pref
  • Warning: CODE 3 resource is not referenced from the jump 
 table
 •• Application should have a “hfdr” -5696 resource for 
 Finder Balloon Help

  1 acur resource
  1 aete resource
 23 ALRT resources
  1 BNDL resource
 13 cicn resources
  5 CNTL resources
 10 CODE resources

 CODE 8 “Show Help” 
  • Warning: the CODE segment is locked

  5 CURS resources
  1 DATA resource
  1 dctb resource
 28 DITL resources
  2 STR# resources

STR# -4033 
  • Warning: the resSysHeap bit is set on this resource

 DITL 400 “Preferences” 
 •• hdlg 400 needed by DITL 400 item 16 is missing!

  5 DLOG resources
  1 DREL resource
  2 eggs resources

 eggs 403 
 •• eggs is an Apple-reserved resource type; it should be 
 used only in Apple files

SPELLING CHECK:

File: “Super Whizzy Write”
Created:Thu, Mar 14, 1996, 9:01 PM
Modified: Wed, Mar 20, 1996, 5:21 PM

 MENU 2 <Item #5> “File” 
 Get Info
 •• Questionable spelling: Info

 STR   300 “OS Error” 
 Mac OS Error Encountered
 •• Questionable spelling: Mac

CLEANUP NEEDS:

File: “Super Whizzy Write”<None (normal)>
Created:Thu, Mar 14, 1996, 9:01 PM
Modified: Wed, Mar 20, 1996, 5:21 PM
Version:2.0.8

 CODE 2 “Core Part 1” 
  • Warning: the resource may contain 7 Debug instruction(s)
  • Warning: the resource may contain 1 DebugStr 
 instruction(s)
  • Warning: the resource may contain 8 MacsBug name(s)


 CODE 4 “Whizzy Specific” 
  • Warning: the resource may contain 2 CHK instruction(s)

 vers 1 
  2.0.8  2.0.8 Copyright © 1992-1996 Whizzy Corp.

 vers 2 
  2.0.8  2.0.8 Copyright © 1992-1996 Whizzy Corp.

SUMMARY:
 SCAN ONLY

 Keyboard Equivalents for Menu Items:
  A Add Attachment  (File Menu)
  C Copy (Edit Menu)
  D Delete (File Menu)
  F Find (File Menu)
  I Get Info (File Menu)
  Q Quit (File Menu)
  S Preferences  (File Menu)
  V Paste (Edit Menu)
  X Cut (Edit Menu)
  Z Undo (Edit Menu)

End of log.

A Few Problems

Even though SoftPolish is a wonderful tool, it is not without flaws. Since reports can be long and difficult to follow, I would like to see Bare Bones add a logical hierarchy to the reports, with a set of disclosure triangles marking each level like the Finders list views. This way you could quickly review all problems and then concentrate on the areas of greatest interest. With version 1.2 I find myself spending a lot of time scrolling through reports looking for particular errors. Another solution might be giving the user greater control over report formatting. Currently, SoftPolish formats all errors the same way. If the next version could mark different types of errors in different fonts or colors, it would make the reports much easier to read.

SoftPolish would also benefit from automation. Although you can drag and drop items onto the SoftPolish icon, this only saves you from having to set the target. You still need to click the Scan Target button, verify the test settings, begin the scan, and save the results to a file. I hope the next version of SoftPolish supports AppleScript.

Finally, users of Metrowerks’ PowerPlant may find themselves disappointed. SoftPolish does not understand “PPob” resources, and is therefore unable to check most interface elements created in PowerPlant’s Constructor.

Conclusions

I highly recommend SoftPolish, despite its few flaws. If you are looking for an effective way to improve the quality of your applications, you should give it serious consideration. By marrying a simple interface to a powerful set of features, Bare Bones has created a quality assurance tool from which almost every Mac developer can benefit.

SoftPolish 1.2 is available directly from Bare Bones Software, from MacTech’s DevDepot, and from select mail order sites - see Bare Bones Software’s web page <http://www.barebones.com> for more ordering information. The SoftPolish CD-ROM delivers the program’s documentation in PDF format, along with a few demos and freeware tools from Bare Bones. The CD also contains a few third party demos including Onyx Technology’s QC, and MindVision’s Installer Vise. At $99 it may not be necessary for hobbyist programmers, but serious shareware authors will easily recover their investment. If you happen to be lucky enough to program the Mac for a living, SoftPolish is a definite must-have.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

MacFamilyTree 8.2.5 - Create and explore...
MacFamilyTree gives genealogy a facelift: modern, interactive, convenient and fast. Explore your family tree and your family history in a way generations of chroniclers before you would have loved.... Read more
Hopper Disassembler 4.3.2- - Binary disa...
Hopper Disassembler is a binary disassembler, decompiler, and debugger for 32- and 64-bit executables. It will let you disassemble any binary you want, and provide you all the information about its... Read more
GraphicConverter 10.5.1 - $39.95
GraphicConverter is an all-purpose image-editing program that can import 200 different graphic-based formats, edit the image, and export it to any of 80 available file formats. The high-end editing... Read more
Delicious Library 3.7 - Import, browse a...
Delicious Library allows you to import, browse, and share all your books, movies, music, and video games with Delicious Library. Run your very own library from your home or office using our... Read more
Adobe Animate CC 2017 18.0.0.107 - Anima...
Animate CC 2018 is available as part of Adobe Creative Cloud for as little as $19.99/month (or $9.99/month if you're a previous Flash Professional customer). Animate CC 2018 (was Flash CC) lets you... Read more
Adobe After Effects CC 2018 15.0 - Creat...
After Effects CC 2018 is available as part of Adobe Creative Cloud for as little as $19.99/month (or $9.99/month if you're a previous After Effects customer). The new, more connected After Effects CC... Read more
Adobe Premiere Pro CC 2018 12.0.0 - Digi...
Premiere Pro CC 2018 is available as part of Adobe Creative Cloud for as little as $19.99/month (or $9.99/month if you're a previous Premiere Pro customer). Adobe Premiere Pro CC 2018 lets you edit... Read more
Alarm Clock Pro 10.3 - $19.95
Alarm Clock Pro isn't just an ordinary alarm clock. Use it to wake you up in the morning, send and compose e-mails, remind you of appointments, randomize the iTunes selection, control an internet... Read more
Adobe Lightroom 20170919-1412-ccb76bd] -...
Adobe Lightroom is available as part of Adobe Creative Cloud for as little as $9.99/month bundled with Photoshop CC as part of the photography package. Lightroom 6 is also available for purchase as a... Read more
Adobe Illustrator CC 2018 22.0.0 - Profe...
Illustrator CC 2018 is available as part of Adobe Creative Cloud for as little as $19.99/month (or $9.99/month if you're a previous Illustrator customer). Adobe Illustrator CC 2018 is the industry... Read more

ICEY (Games)
ICEY 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: ICEY is a 2D side-scrolling action game. As you follow the narrator's omnipresent voice, you will see through ICEY's eyes and learn the... | Read more »
The best new games we played this week -...
We've made it, folks. Another weekend is upon us. It's time to sit back and relax with the best new releases of the week. Puzzles, strategy RPGs, and arcade games abound this week. There's a lot of quality stuff to unpack this week, so let's hop... | Read more »
Wheels of Aurelia (Games)
Wheels of Aurelia 1.0.1 Device: iOS Universal Category: Games Price: $3.99, Version: 1.0.1 (iTunes) Description: | Read more »
Halcyon 6: Starbase Commander guide - ti...
Halcyon 6 is a well-loved indie RPG with stellar tactical combat and some pretty good writing, too. It's now landed on the App Store, so mobile fans, if you're itching for a good intergalactic adventure, here's your game. Being a strategy RPG, the... | Read more »
Game of Thrones: Conquest guide - how to...
Fans of base building games might be excited to know that yet another entry in the genre has materialized - Game of Thrones: Conquest. Yes, you can now join the many kingdoms of the famed book series, or create your own, as you try to conquer... | Read more »
Halcyon 6: Starbase Commander (Games)
Halcyon 6: Starbase Commander 1.4.2.0 Device: iOS Universal Category: Games Price: $6.99, Version: 1.4.2.0 (iTunes) Description: An epic space strategy RPG with base building, deep tactical combat, crew management, alien diplomacy,... | Read more »
Legacy of Discord celebrates its 1 year...
It’s been a thrilling first year for fans of Legacy of Discord, the stunning PvP dungeon-crawling ARPG from YOOZOO Games, and now it’s time to celebrate the game’s first anniversary. The developers are amping up the festivities with some exciting... | Read more »
3 reasons to play Thunder Armada - the n...
The bygone days of the Battleship board game might have past, but naval combat simulators still find an audience on mobile. Thunder Armada is Chinese developer Chyogames latest entry into the genre, drawing inspiration from the explosive exchanges... | Read more »
Experience a full 3D fantasy MMORPG, as...
Those hoping to sink their teeth into a meaty hack and slash RPG that encourages you to fight with others might want to check out EZFun’s new Eternity Guardians. Available to download for iOS and Android, Eternity Guardians is an MMORPG that lets... | Read more »
Warhammer Quest 2 (Games)
Warhammer Quest 2 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: Dungeon adventures in the Warhammer World are back! | Read more »

Price Scanner via MacPrices.net

Save $100 on 13″ MacBook Airs, prices start a...
Adorama has 2017 13″ MacBook Airs on sale today for $100 off MSRP including free shipping. Adorama charges NY & NJ sales tax only: – 13″ 1.8GHz/128GB MacBook Air (MQD32LL/A): $899, $100 off MSRP... Read more
1.4GHz Mac mini available for $399, $100 off...
TigerDirect has the 1.4GHz Mac mini on sale today for $399 including free shipping. Their price is $100 off MSRP, and it’s the lowest price available for this model. Although currently out of stock,... Read more
21″ 2.3GHz iMac on sale for $999, save $100
MacMall has the 21″ 2.3GHz iMac (MMQA2LL/A) on sale today for $999 including free shipping. Their price is $100 off MSRP, and it’s the lowest price available for this model. Read more
12″ iPad Pros on sale for $50 off MSRP, no ta...
Adorama has 12″ iPad Pros on sale today for $50 off MSRP. Shipping is free, and Adorama charges sales tax in NY & NJ only: – 12″ 64GB iPad Pro: $749, save $50 – 12″ 256GB iPad Pro: $899, save $50... Read more
9″ iPads on sale for $30 off, starting at $29...
MacMall has 9″ iPads on sale for $30 off including free shipping: – 9″ 32GB iPad: $299 – 9″ 128GB iPad: $399 Read more
Apple restocks full line of refurbished 13″ M...
Apple has restocked a full line of Apple Certified Refurbished 2017 13″ MacBook Pros for $200-$300 off MSRP. A standard Apple one-year warranty is included with each MacBook, and shipping is free.... Read more
13″ 3.1GHz/256GB MacBook Pro on sale for $167...
Amazon has the 2017 13″ 3.1GHz/256GB Space Gray MacBook Pro on sale today for $121 off MSRP including free shipping: – 13″ 3.1GHz/256GB Space Gray MacBook Pro (MPXV2LL/A): $1678 $121 off MSRP Keep an... Read more
13″ MacBook Pros on sale for up to $120 off M...
B&H Photo has 2017 13″ MacBook Pros in stock today and on sale for up to $120 off MSRP, each including free shipping plus NY & NJ sales tax only: – 13-inch 2.3GHz/128GB Space Gray MacBook... Read more
15″ MacBook Pros on sale for up to $200 off M...
B&H Photo has 15″ MacBook Pros on sale for up to $200 off MSRP. Shipping is free, and B&H charges sales tax in NY & NJ only: – 15″ 2.8GHz MacBook Pro Space Gray (MPTR2LL/A): $2249, $150... Read more
Roundup of Apple Certified Refurbished iMacs,...
Apple has a full line of Certified Refurbished 2017 21″ and 27″ iMacs available starting at $1019 and ranging up to $350 off original MSRP. Apple’s one-year warranty is standard, and shipping is free... Read more

Jobs Board

Project Engineer, *Apple* Education Profess...
Project Engineer, Apple Education Professional Services Job Number: 113143353New York City, New York, United StatesPosted: Oct. 17, 2017Weekly Hours: 40.00 Job Read more
Commerce Software Engineer, *Apple* Media P...
Commerce Software Engineer, Apple Media Products Job Number: 113092072New York City, New York, United StatesPosted: Oct. 19, 2017Weekly Hours: 40.00 Job Summary With Read more
Engineering Manager, *Apple* Retail Enginee...
# Engineering Manager, Apple Retail Engineering Job Number: 58139948 Santa Clara Valley, California, United States Posted: 20-Oct-2017 Weekly Hours: 40.00 **Job Read more
*Apple* Retail - Multiple Positions - Apple,...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
Commerce Engineer, *Apple* Media Products -...
Commerce Engineer, Apple Media Products (New York City) Job Number: 113028813New York City, New York, United StatesPosted: Sep. 20, 2017Weekly Hours: 40.00 Job Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.