This is a sample of how we could implement the colon-t prolint rule:
DEF VAR lv_String AS CHAR NO-UNDO.
FOR EACH TTNode NO-LOCK WHERE TTnode.NodeTypeNum EQ NodeTypes:QSTRING#:
IF SUBSTR(TTnode.NodeText,LENGTH(TTnode.NodeText) - 1) NE ":T" THEN NEXT.
ASSIGN lv_String = SUBSTRING(TTnode.NodeText,2,LENGTH(TTnode.NodeText) - 4).
IF LENGTH(TRIM(lv_String)) = LENGTH(lv_String) THEN NEXT.
MESSAGE SUBSTITUTE('Line: &1, Column: &2 attrib :T will trim string "&3"',TTnode.NodeLine,TTNode.NodeCol, lv_String) VIEW-AS ALERT-BOX INFORMATION.
END.
hey! ma! I _can_ write prolint rules now ! ;)