41 </tr> |
41 </tr> |
42 </table> |
42 </table> |
43 <p> </p> |
43 <p> </p> |
44 <p>The following table indicates an example of rules listed in the Rules tab and associated error messages that would be generated in the Problems view.</p> |
44 <p>The following table indicates an example of rules listed in the Rules tab and associated error messages that would be generated in the Problems view.</p> |
45 <table border="0" cellspacing="0" cellpadding="2"> |
45 <table border="0" cellspacing="0" cellpadding="2"> |
46 <tr valign="top"><th width="294" class="Cell">Name</th> |
46 <tr valign="top"><th width="353" class="Cell">Name</th> |
47 <th width="585" class="Cell">Description</th> |
47 <th width="398" class="Cell">Description</th> |
48 </tr> |
48 </tr> |
49 |
49 |
50 <tr> |
50 <tr> |
51 <td width="294" valign="top" class="code"><p>accessArrayElementWithoutCheck</p></td> |
51 <td class="code">accessArrayElementWithoutCheck</td> |
52 <td width="585" valign="top"><p>Array element accessed by At() function without checking index is within array range</p></td> |
52 <td width="398" valign="top">Array element accessed by At() function without checking index is within array range</td> |
53 </tr> |
53 </tr> |
54 <tr> |
54 <tr> |
55 <td width="294" valign="top" class="code"><p>accessArrayElementWithoutCheck2</p></td> |
55 <td class="code">accessArrayElementWithoutCheck2</td> |
56 <td width="585" valign="top"><p>Array element accessed by [] without checking range</p></td> |
56 <td width="398" valign="top">Array element accessed by [] without checking range</td> |
57 </tr> |
57 </tr> |
58 <tr> |
58 <tr> |
59 <td width="294" valign="top" class="code"><p>activestart</p></td> |
59 <td class="code">activestart</td> |
60 <td width="585" valign="top"><p>Using CActiveScheduler::Start</p></td> |
60 <td width="398" valign="top">Using CActiveScheduler::Start</td> |
61 </tr> |
61 </tr> |
62 <tr> |
62 <tr> |
63 <td width="294" valign="top" class="code"><p>activestop</p></td> |
63 <td class="code">activestop</td> |
64 <td width="585" valign="top"><p>Using CActiveScheduler::Stop</p></td> |
64 <td width="398" valign="top">Using CActiveScheduler::Stop</td> |
65 </tr> |
65 </tr> |
66 <tr> |
66 <tr> |
67 <td width="294" valign="top" class="code"><p>arraypassing</p></td> |
67 <td class="code">arraypassing</td> |
68 <td width="585" valign="top"><p>Passing arrays by value rather than reference</p></td> |
68 <td width="398" valign="top">Passing arrays by value rather than reference</td> |
69 </tr> |
69 </tr> |
70 <tr> |
70 <tr> |
71 <td width="294" valign="top" class="code"><p>arrayptrcleanup</p></td> |
71 <td class="code">arrayptrcleanup</td> |
72 <td width="585" valign="top"><p>Using local CArrayPtr classes without cleanup items</p></td> |
72 <td width="398" valign="top">Using local CArrayPtr classes without cleanup items</td> |
73 </tr> |
73 </tr> |
74 <tr> |
74 <tr> |
75 <td width="294" valign="top" class="code"><p>assertdebuginvariant</p></td> |
75 <td class="code">assertdebuginvariant</td> |
76 <td width="585" valign="top"><p>__ASSERT_DEBUG with User::Invariant</p></td> |
76 <td width="398" valign="top">__ASSERT_DEBUG with User::Invariant</td> |
77 </tr> |
77 </tr> |
78 <tr> |
78 <tr> |
79 <td width="294" valign="top" class="code"><p>baddefines</p></td> |
79 <td class="code">baddefines</td> |
80 <td width="585" valign="top"><p>Lowercase definition names</p></td> |
80 <td width="398" valign="top">Lowercase definition names</td> |
81 </tr> |
81 </tr> |
82 <tr> |
82 <tr> |
83 <td width="294" valign="top" class="code"><p>baseconstruct</p></td> |
83 <td class="code">baseconstruct</td> |
84 <td width="585" valign="top"><p>Leaving function called before BaseConstructL()</p></td> |
84 <td width="398" valign="top">Leaving function called before BaseConstructL()</td> |
85 </tr> |
85 </tr> |
86 <tr> |
86 <tr> |
87 <td width="294" valign="top" class="code"><p>callActiveObjectWithoutCheckingOrStopping</p></td> |
87 <td class="code">callActiveObjectWithoutCheckingOrStopping</td> |
88 <td width="585" valign="top"><p>Active object called without checking whether it is active or canceling it first</p></td> |
88 <td width="398" valign="top">Active object called without checking whether it is active or canceling it first</td> |
89 </tr> |
89 </tr> |
90 <tr> |
90 <tr> |
91 <td width="294" valign="top" class="code"><p>changenotification</p></td> |
91 <td class="code">changenotification</td> |
92 <td width="585" valign="top"><p>Using RSAVarChangeNotify to see System Agent changes</p></td> |
92 <td width="398" valign="top">Using RSAVarChangeNotify to see System Agent changes</td> |
93 </tr> |
93 </tr> |
94 <tr> |
94 <tr> |
95 <td width="294" valign="top" class="code"><p>cleanup</p></td> |
95 <td class="code">cleanup</td> |
96 <td width="585" valign="top"><p>CleanupStack::Pop(AndDestroy) parameters</p></td> |
96 <td width="398" valign="top">CleanupStack::Pop(AndDestroy) parameters</td> |
97 </tr> |
97 </tr> |
98 <tr> |
98 <tr> |
99 <td width="294" valign="top" class="code"><p>commentcode</p></td> |
99 <td class="code">commentcode</td> |
100 <td width="585" valign="top"><p>Commented-out code</p></td> |
100 <td width="398" valign="top">Commented-out code</td> |
101 </tr> |
101 </tr> |
102 <tr> |
102 <tr> |
103 <td width="294" valign="top" class="code"><p>connect</p></td> |
103 <td class="code">connect</td> |
104 <td width="585" valign="top"><p>Ignoring Connect() return value</p></td> |
104 <td width="398" valign="top">Ignoring Connect() return value</td> |
105 </tr> |
105 </tr> |
106 <tr> |
106 <tr> |
107 <td width="294" valign="top" class="code"><p>ConnectAndDontCloseMemberVariable</p></td> |
107 <td class="code">ConnectAndDontCloseMemberVariable</td> |
108 <td width="585" valign="top"><p>Calling Connect() or Open() on a member variable without calling Close() in the destructor</p></td> |
108 <td width="398" valign="top">Calling Connect() or Open() on a member variable without calling Close() in the destructor</td> |
109 </tr> |
109 </tr> |
110 <tr> |
110 <tr> |
111 <td width="294" valign="top" class="code"><p>constnames</p></td> |
111 <td class="code">constnames</td> |
112 <td width="585" valign="top"><p>Badly-named constants</p></td> |
112 <td width="398" valign="top">Badly-named constants</td> |
113 </tr> |
113 </tr> |
114 <tr> |
114 <tr> |
115 <td width="294" valign="top" class="code"><p>consttdescptr</p></td> |
115 <td class="code">consttdescptr</td> |
116 <td width="585" valign="top"><p>Const descriptor pointer as argument</p></td> |
116 <td width="398" valign="top">Const descriptor pointer as argument</td> |
117 </tr> |
117 </tr> |
118 <tr> |
118 <tr> |
119 <td width="294" valign="top" class="code"><p>controlornull</p></td> |
119 <td class="code">controlornull</td> |
120 <td width="585" valign="top"><p>Accessing return value of ControlOrNull()</p></td> |
120 <td width="398" valign="top">Accessing return value of ControlOrNull()</td> |
121 </tr> |
121 </tr> |
122 <tr> |
122 <tr> |
123 <td width="294" valign="top" class="code"><p>ctltargettype</p></td> |
123 <td class="code">crepositorie</td> |
124 <td width="585" valign="top"><p>Use of targettype ctl</p></td> |
124 <td valign="top">Check for Central Repository usage</td> |
125 </tr> |
125 </tr> |
126 <tr> |
126 <tr> |
127 <td width="294" valign="top" class="code"><p>debugrom</p></td> |
127 <td class="code">ctltargettype</td> |
128 <td width="585" valign="top"><p>Debug components in ROM</p></td> |
128 <td width="398" valign="top">Use of targettype ctl</td> |
129 </tr> |
129 </tr> |
130 <tr> |
130 <tr> |
131 <td width="294" valign="top" class="code"><p>declarename</p></td> |
131 <td valign="top" class="code">customizableicons</td> |
132 <td width="585" valign="top"><p>Use of __DECLARE_NAME</p></td> |
132 <td valign="top"> Check for customizable icons</td> |
133 </tr> |
133 </tr> |
134 <tr> |
134 <tr> |
135 <td width="294" valign="top" class="code"><p>deleteMemberVariable</p></td> |
135 <td class="code">debugrom</td> |
136 <td width="585" valign="top"><p>Member variable deleted incorrectly</p></td> |
136 <td width="398" valign="top">Debug components in ROM</td> |
137 </tr> |
137 </tr> |
138 <tr> |
138 <tr> |
139 <td width="294" valign="top" class="code"><p>destructor</p></td> |
139 <td class="code">declarename</td> |
140 <td width="585" valign="top"><p>Pointer access in destructors</p></td> |
140 <td width="398" valign="top">Use of __DECLARE_NAME</td> |
141 </tr> |
141 </tr> |
142 <tr> |
142 <tr> |
143 <td width="294" valign="top" class="code"><p>doubleSemiColon</p></td> |
143 <td class="code">deleteMemberVariable</td> |
144 <td width="585" valign="top"><p>Use of double semicolon</p></td> |
144 <td width="398" valign="top">Member variable deleted incorrectly</td> |
145 </tr> |
145 </tr> |
146 <tr> |
146 <tr> |
147 <td width="294" valign="top" class="code"><p>driveletters</p></td> |
147 <td class="code">destructor</td> |
148 <td width="585" valign="top"><p>Hard-coded drive letters</p></td> |
148 <td width="398" valign="top">Pointer access in destructors</td> |
149 </tr> |
149 </tr> |
150 <tr> |
150 <tr> |
151 <td width="294" valign="top" class="code"><p>eikbuttons</p></td> |
151 <td class="code">doubleSemiColon</td> |
152 <td width="585" valign="top"><p>Checks that the R_EIK_BUTTONS_* resources are not being used</p></td> |
152 <td width="398" valign="top">Use of double semicolon</td> |
153 </tr> |
153 </tr> |
154 <tr> |
154 <tr> |
155 <td width="294" valign="top" class="code"><p>eikonenvstatic</p></td> |
155 <td class="code">driveletters</td> |
156 <td width="585" valign="top"><p>Using CEikonEnv::Static</p></td> |
156 <td width="398" valign="top">Hard-coded drive letters</td> |
157 </tr> |
157 </tr> |
158 <tr> |
158 <tr> |
159 <td width="294" valign="top" class="code"><p>enummembers</p></td> |
159 <td class="code">eikbuttons</td> |
160 <td width="585" valign="top"><p>Enums with badly-named members</p></td> |
160 <td width="398" valign="top">Checks that the R_EIK_BUTTONS_* resources are not being used</td> |
161 </tr> |
161 </tr> |
162 <tr> |
162 <tr> |
163 <td width="294" valign="top" class="code"><p>enumnames</p></td> |
163 <td class="code">eikonenvstatic</td> |
164 <td width="585" valign="top"><p>Badly-named enums</p></td> |
164 <td width="398" valign="top">Using CEikonEnv::Static</td> |
165 </tr> |
165 </tr> |
166 <tr> |
166 <tr> |
167 <td width="294" valign="top" class="code"><p>exportinline</p></td> |
167 <td class="code">enummembers</td> |
168 <td width="585" valign="top"><p>Exporting inline functions</p></td> |
168 <td width="398" valign="top">Enums with badly-named members</td> |
169 </tr> |
169 </tr> |
170 <tr> |
170 <tr> |
171 <td width="294" valign="top" class="code"><p>exportpurevirtual</p></td> |
171 <td class="code">enumnames</td> |
172 <td width="585" valign="top"><p>Exporting pure virtual functions</p></td> |
172 <td width="398" valign="top">Badly-named enums</td> |
173 </tr> |
173 </tr> |
174 <tr> |
174 <tr> |
175 <td width="294" valign="top" class="code"><p>externaldriveletters</p></td> |
175 <td class="code">exportinline</td> |
176 <td width="585" valign="top"><p>Hard-coded external drive letters</p></td> |
176 <td width="398" valign="top">Exporting inline functions</td> |
177 </tr> |
177 </tr> |
178 <tr> |
178 <tr> |
179 <td width="294" valign="top" class="code"><p>foff</p></td> |
179 <td class="code">exportpurevirtual</td> |
180 <td width="585" valign="top"><p>Use of _FOFF</p></td> |
180 <td width="398" valign="top">Exporting pure virtual functions</td> |
181 </tr> |
181 </tr> |
182 <tr> |
182 <tr> |
183 <td width="294" valign="top" class="code"><p>forbiddenwords</p></td> |
183 <td class="code">externaldriveletters</td> |
184 <td width="585" valign="top"><p>Use of forbidden words in header files</p></td> |
184 <td width="398" valign="top">Hard-coded external drive letters</td> |
185 </tr> |
185 </tr> |
186 <tr> |
186 <tr> |
187 <td width="294" valign="top" class="code"><p>forgottoputptroncleanupstack</p></td> |
187 <td class="code">flags</td> |
188 <td width="585" valign="top"><p>Neglected to put variable on cleanup stack</p></td> |
188 <td valign="top">Check for flag usage</td> |
189 </tr> |
189 </tr> |
190 <tr> |
190 <tr> |
191 <td width="294" valign="top" class="code"><p>friend</p></td> |
191 <td class="code">foff</td> |
192 <td width="585" valign="top"><p>Use of friends</p></td> |
192 <td width="398" valign="top">Use of _FOFF</td> |
193 </tr> |
193 </tr> |
194 <tr> |
194 <tr> |
195 <td width="294" valign="top" class="code"><p>goto</p></td> |
195 <td class="code">forbiddenwords</td> |
196 <td width="585" valign="top"><p>Use of goto</p></td> |
196 <td width="398" valign="top">Use of forbidden words in header files</td> |
197 </tr> |
197 </tr> |
198 <tr> |
198 <tr> |
199 <td width="294" valign="top" class="code"><p>ifassignments</p></td> |
199 <td class="code">forgottoputptroncleanupstack</td> |
200 <td width="585" valign="top"><p>Assignment in an If statement</p></td> |
200 <td width="398" valign="top">Neglected to put variable on cleanup stack</td> |
201 </tr> |
201 </tr> |
202 <tr> |
202 <tr> |
203 <td width="294" valign="top" class="code"><p>ifpreprocessor</p></td> |
203 <td class="code">friend</td> |
204 <td width="585" valign="top"><p>Use of #if in .h files</p></td> |
204 <td width="398" valign="top">Use of friends</td> |
205 </tr> |
205 </tr> |
206 <tr> |
206 <tr> |
207 <td width="294" valign="top" class="code"><p>inheritanceorder</p></td> |
207 <td class="code">goto</td> |
208 <td width="585" valign="top"><p>Incorrect inheritance order of M and C classes</p></td> |
208 <td width="398" valign="top">Use of goto</td> |
209 </tr> |
209 </tr> |
210 <tr> |
210 <tr> |
211 <td width="294" valign="top" class="code"><p>intleaves</p></td> |
211 <td class="code">ifassignments</td> |
212 <td width="585" valign="top"><p>Methods that leave AND return a TInt error</p></td> |
212 <td width="398" valign="top">Assignment in an If statement</td> |
213 </tr> |
213 </tr> |
214 <tr> |
214 <tr> |
215 <td width="294" valign="top" class="code"><p>jmp</p></td> |
215 <td class="code">ifpreprocessor</td> |
216 <td width="585" valign="top"><p>Use of setjmp and/or longjmp</p></td> |
216 <td width="398" valign="top">Use of #if in .h files</td> |
217 </tr> |
217 </tr> |
218 <tr> |
218 <tr> |
219 <td width="294" valign="top" class="code"><p>leave</p></td> |
219 <td class="code">inheritanceorder</td> |
220 <td width="585" valign="top"><p>Leaving functions called in non-leaving functions</p></td> |
220 <td width="398" valign="top">Incorrect inheritance order of M and C classes</td> |
221 </tr> |
221 </tr> |
222 <tr> |
222 <tr> |
223 <td width="294" valign="top" class="code"><p>LeaveNoError</p></td> |
223 <td class="code">intleaves</td> |
224 <td width="585" valign="top"><p>Leaving with KErrNone</p></td> |
224 <td width="398" valign="top">Methods that leave AND return a TInt error</td> |
225 </tr> |
225 </tr> |
226 <tr> |
226 <tr> |
227 <td width="294" valign="top" class="code"><p>leavingoperators</p></td> |
227 <td class="code">jmp</td> |
228 <td width="585" valign="top"><p>Leaving functions called in operator functions</p></td> |
228 <td width="398" valign="top">Use of setjmp and/or longjmp</td> |
229 </tr> |
229 </tr> |
230 <tr> |
230 <tr> |
231 <td width="294" valign="top" class="code"><p>LFunctionCantLeave</p></td> |
231 <td class="code">leave</td> |
232 <td width="585" valign="top"><p>L-functions that cannot leave</p></td> |
232 <td width="398" valign="top">Leaving functions called in non-leaving functions</td> |
233 </tr> |
233 </tr> |
234 <tr> |
234 <tr> |
235 <td width="294" valign="top" class="code"><p>longlines</p></td> |
235 <td class="code">LeaveNoError</td> |
236 <td width="585" valign="top"><p>Overly long lines of code</p></td> |
236 <td width="398" valign="top">Leaving with KErrNone</td> |
237 </tr> |
237 </tr> |
238 <tr> |
238 <tr> |
239 <td width="294" valign="top" class="code"><p>magicnumbers</p></td> |
239 <td class="code">leavingoperators</td> |
240 <td width="585" valign="top"><p>Use of magic numbers</p></td> |
240 <td width="398" valign="top">Leaving functions called in operator functions</td> |
241 </tr> |
241 </tr> |
242 <tr> |
242 <tr> |
243 <td width="294" valign="top" class="code"><p>mclassdestructor</p></td> |
243 <td class="code">LFunctionCantLeave</td> |
244 <td width="585" valign="top"><p>M class has destructor</p></td> |
244 <td width="398" valign="top">L-functions that cannot leave</td> |
245 </tr> |
245 </tr> |
246 <tr> |
246 <tr> |
247 <td width="294" valign="top" class="code"><p>memberlc</p></td> |
247 <td class="code">longlines</td> |
248 <td width="585" valign="top"><p>Assigning LC methods to member variables</p></td> |
248 <td width="398" valign="top">Overly long lines of code</td> |
249 </tr> |
249 </tr> |
250 <tr> |
250 <tr> |
251 <td width="294" valign="top" class="code"><p>membervariablecallld</p></td> |
251 <td class="code">magicnumbers</td> |
252 <td width="585" valign="top"><p>Calling LD function on member variable</p></td> |
252 <td width="398" valign="top">Use of magic numbers</td> |
253 </tr> |
253 </tr> |
254 <tr> |
254 <tr> |
255 <td width="294" valign="top" class="code"><p>missingcancel</p></td> |
255 <td class="code">mclassdestructor</td> |
256 <td width="585" valign="top"><p>Cancel() not called in active object's destructor</p></td> |
256 <td width="398" valign="top">M class has destructor</td> |
257 </tr> |
257 </tr> |
258 <tr> |
258 <tr> |
259 <td width="294" valign="top" class="code"><p>missingcclass</p></td> |
259 <td class="code">memberlc</td> |
260 <td width="585" valign="top"><p>C class not inheriting from another C class</p></td> |
260 <td width="398" valign="top">Assigning LC methods to member variables</td> |
261 </tr> |
261 </tr> |
262 <tr> |
262 <tr> |
263 <td width="294" valign="top" class="code"><p>mmpsourcepath</p></td> |
263 <td class="code">membervariablecallld</td> |
264 <td width="585" valign="top"><p>Use of absolute path names in MMP files</p></td> |
264 <td width="398" valign="top">Calling LD function on member variable</td> |
265 </tr> |
265 </tr> |
266 <tr> |
266 <tr> |
267 <td width="294" valign="top" class="code"><p>multilangrsc</p></td> |
267 <td class="code">missingcancel</td> |
268 <td width="585" valign="top"><p>Not using BaflUtils::NearestLanguageFile() when loading a resource file</p></td> |
268 <td width="398" valign="top">Cancel() not called in active object's destructor</td> |
269 </tr> |
269 </tr> |
270 <tr> |
270 <tr> |
271 <td width="294" valign="top" class="code"><p>multipledeclarations</p></td> |
271 <td class="code">missingcclass</td> |
272 <td width="585" valign="top"><p>Multiple declarations on one line</p></td> |
272 <td width="398" valign="top">C class not inheriting from another C class</td> |
273 </tr> |
273 </tr> |
274 <tr> |
274 <tr> |
275 <td width="294" valign="top" class="code"><p>multipleinheritance</p></td> |
275 <td class="code">mmpsourcepath</td> |
276 <td width="585" valign="top"><p>Non M-class multiple inheritance</p></td> |
276 <td width="398" valign="top">Use of absolute path names in MMP files</td> |
277 </tr> |
277 </tr> |
278 <tr> |
278 <tr> |
279 <td width="294" valign="top" class="code"><p>mydocs</p></td> |
279 <td class="code">multilangrsc</td> |
280 <td width="585" valign="top"><p>Hard-coded mydocs directory strings</p></td> |
280 <td width="398" valign="top">Not using BaflUtils::NearestLanguageFile() when loading a resource file</td> |
281 </tr> |
281 </tr> |
282 <tr> |
282 <tr> |
283 <td width="294" valign="top" class="code"><p>namespace</p></td> |
283 <td class="code">multipledeclarations</td> |
284 <td width="585" valign="top"><p>Use of namespace</p></td> |
284 <td width="398" valign="top">Multiple declarations on one line</td> |
285 </tr> |
285 </tr> |
286 <tr> |
286 <tr> |
287 <td width="294" valign="top" class="code"><p>newlreferences</p></td> |
287 <td class="code">multipleinheritance</td> |
288 <td width="585" valign="top"><p>NewL() returning a reference</p></td> |
288 <td width="398" valign="top">Non M-class multiple inheritance</td> |
289 </tr> |
289 </tr> |
290 <tr> |
290 <tr> |
291 <td width="294" valign="top" class="code"><p>noleavetrap</p></td> |
291 <td class="code">mydocs</td> |
292 <td width="585" valign="top"><p>TRAP used with no leaving functions</p></td> |
292 <td width="398" valign="top">Hard-coded mydocs directory strings</td> |
293 </tr> |
293 </tr> |
294 <tr> |
294 <tr> |
295 <td width="294" valign="top" class="code"><p>nonconsthbufc</p></td> |
295 <td class="code">namespace</td> |
296 <td width="585" valign="top"><p>Non-const HBufC* parameter passing</p></td> |
296 <td width="398" valign="top">Use of namespace</td> |
297 </tr> |
297 </tr> |
298 <tr> |
298 <tr> |
299 <td width="294" valign="top" class="code"><p>nonconsttdesc</p></td> |
299 <td class="code">newlreferences</td> |
300 <td width="585" valign="top"><p>Non-const TDesC& parameter passing</p></td> |
300 <td width="398" valign="top">NewL() returning a reference</td> |
301 </tr> |
301 </tr> |
302 <tr> |
302 <tr> |
303 <td width="294" valign="top" class="code"><p>nonleavenew</p></td> |
303 <td class="code">noleavetrap</td> |
304 <td width="585" valign="top"><p>Use of new without (ELeave)</p></td> |
304 <td width="398" valign="top">TRAP used with no leaving functions</td> |
305 </tr> |
305 </tr> |
306 <tr> |
306 <tr> |
307 <td width="294" valign="top" class="code"><p>nonunicodeskins</p></td> |
307 <td class="code">nonconsthbufc</td> |
308 <td width="585" valign="top"><p>Non-Unicode skins</p></td> |
308 <td width="398" valign="top">Non-const HBufC* parameter passing</td> |
309 </tr> |
309 </tr> |
310 <tr> |
310 <tr> |
311 <td width="294" valign="top" class="code"><p>null</p></td> |
311 <td class="code">nonconsttdesc</td> |
312 <td width="585" valign="top"><p>NULL equality check</p></td> |
312 <td width="398" valign="top">Non-const TDesC& parameter passing</td> |
313 </tr> |
313 </tr> |
314 <tr> |
314 <tr> |
315 <td width="294" valign="top" class="code"><p>open</p></td> |
315 <td class="code">nonleavenew</td> |
316 <td width="585" valign="top"><p>Ignoring Open() return value</p></td> |
316 <td width="398" valign="top">Use of new without (ELeave)</td> |
317 </tr> |
317 </tr> |
318 <tr> |
318 <tr> |
319 <td width="294" valign="top" class="code"><p>pointertoarrays</p></td> |
319 <td class="code">nonunicodeskins</td> |
320 <td width="585" valign="top"><p>Pointer to arrays as members of a C class</p></td> |
320 <td width="398" valign="top">Non-Unicode skins</td> |
321 </tr> |
321 </tr> |
322 <tr> |
322 <tr> |
323 <td width="294" valign="top" class="code"><p>pragmadisable</p></td> |
323 <td class="code">null</td> |
324 <td width="585" valign="top"><p>Use of #pragma warning</p></td> |
324 <td width="398" valign="top">NULL equality check</td> |
325 </tr> |
325 </tr> |
326 <tr> |
326 <tr> |
327 <td width="294" valign="top" class="code"><p>pragmamessage</p></td> |
327 <td class="code">open</td> |
328 <td width="585" valign="top"><p>Use of #pragma message</p></td> |
328 <td width="398" valign="top">Ignoring Open() return value</td> |
329 </tr> |
329 </tr> |
330 <tr> |
330 <tr> |
331 <td width="294" valign="top" class="code"><p>pragmaother</p></td> |
331 <td class="code">pointertoarrays</td> |
332 <td width="585" valign="top"><p>Use of #pragma other than warning and message</p></td> |
332 <td width="398" valign="top">Pointer to arrays as members of a C class</td> |
333 </tr> |
333 </tr> |
334 <tr> |
334 <tr> |
335 <td width="294" valign="top" class="code"><p>privateinheritance</p></td> |
335 <td class="code">pragmadisable</td> |
336 <td width="585" valign="top"><p>Use of private inheritance</p></td> |
336 <td width="398" valign="top">Use of #pragma warning</td> |
337 </tr> |
337 </tr> |
338 <tr> |
338 <tr> |
339 <td width="294" valign="top" class="code"><p>pushaddrvar</p></td> |
339 <td class="code">pragmamessage</td> |
340 <td width="585" valign="top"><p>Pushing address of a variable onto the cleanup stack</p></td> |
340 <td width="398" valign="top">Use of #pragma message</td> |
341 </tr> |
341 </tr> |
342 <tr> |
342 <tr> |
343 <td width="294" valign="top" class="code"><p>pushmember</p></td> |
343 <td class="code">pragmaother</td> |
344 <td width="585" valign="top"><p>Pushing data members onto the cleanup stack</p></td> |
344 <td width="398" valign="top">Use of #pragma other than warning and message</td> |
345 </tr> |
345 </tr> |
346 <tr> |
346 <tr> |
347 <td width="294" valign="top" class="code"><p>readresource</p></td> |
347 <td class="code">privateinheritance</td> |
348 <td width="585" valign="top"><p>Using ReadResource() instead of ReadResourceL()</p></td> |
348 <td width="398" valign="top">Use of private inheritance</td> |
349 </tr> |
349 </tr> |
350 <tr> |
350 <tr> |
351 <td width="294" valign="top" class="code"><p>resourcenotoncleanupstack</p></td> |
351 <td class="code">pushaddrvar</td> |
352 <td width="585" valign="top"><p>Neglected to put resource objects on cleanup stack</p></td> |
352 <td width="398" valign="top">Pushing address of a variable onto the cleanup stack</td> |
353 </tr> |
353 </tr> |
354 <tr> |
354 <tr> |
355 <td width="294" valign="top" class="code"><p>resourcesonheap</p></td> |
355 <td class="code">pushmember</td> |
356 <td width="585" valign="top"><p>Resource objects on the heap</p></td> |
356 <td width="398" valign="top">Pushing data members onto the cleanup stack</td> |
357 </tr> |
357 </tr> |
358 <tr> |
358 <tr> |
359 <td width="294" valign="top" class="code"><p>returndescriptoroutofscope</p></td> |
359 <td class="code">readresource</td> |
360 <td width="585" valign="top"><p>Return descriptor out of scope</p></td> |
360 <td width="398" valign="top">Using ReadResource() instead of ReadResourceL()</td> |
361 </tr> |
361 </tr> |
362 <tr> |
362 <tr> |
363 <td width="294" valign="top" class="code"><p>rfs</p></td> |
363 <td class="code">resourcenotoncleanupstack</td> |
364 <td width="585" valign="top"><p>Use of non-pointer/reference RFs</p></td> |
364 <td width="398" valign="top">Neglected to put resource objects on cleanup stack</td> |
365 </tr> |
365 </tr> |
366 <tr> |
366 <tr> |
367 <td width="294" valign="top" class="code"><p>rssnames</p></td> |
367 <td class="code">resourcesonheap</td> |
368 <td width="585" valign="top"><p>Duplicate RSS names</p></td> |
368 <td width="398" valign="top">Resource objects on the heap</td> |
369 </tr> |
369 </tr> |
370 <tr> |
370 <tr> |
371 <td width="294" valign="top" class="code"><p>stringliterals</p></td> |
371 <td class="code">returndescriptoroutofscope</td> |
372 <td width="585" valign="top"><p>Use of _L string literals</p></td> |
372 <td width="398" valign="top">Return descriptor out of scope</td> |
373 </tr> |
373 </tr> |
374 <tr> |
374 <tr> |
375 <td width="294" valign="top" class="code"><p>stringsinresourcefiles</p></td> |
375 <td class="code">rfs</td> |
376 <td width="585" valign="top"><p>Strings in RSS or RA files</p></td> |
376 <td width="398" valign="top">Use of non-pointer/reference RFs</td> |
377 </tr> |
377 </tr> |
378 <tr> |
378 <tr> |
379 <td width="294" valign="top" class="code"><p>struct</p></td> |
379 <td class="code">rssnames</td> |
380 <td width="585" valign="top"><p>Use of struct</p></td> |
380 <td width="398" valign="top">Duplicate RSS names</td> |
381 </tr> |
381 </tr> |
382 <tr> |
382 <tr> |
383 <td width="294" valign="top" class="code"><p>tcclasses</p></td> |
383 <td class="code">stringliterals</td> |
384 <td width="585" valign="top"><p>T classes inheriting from C classes</p></td> |
384 <td width="398" valign="top">Use of _L string literals</td> |
385 </tr> |
385 </tr> |
386 <tr> |
386 <tr> |
387 <td width="294" valign="top" class="code"><p>tclassdestructor</p></td> |
387 <td class="code">stringsinresourcefiles</td> |
388 <td width="585" valign="top"><p>T class has destructor</p></td> |
388 <td width="398" valign="top">Strings in RSS or RA files</td> |
389 </tr> |
389 </tr> |
390 <tr> |
390 <tr> |
391 <td width="294" valign="top" class="code"><p>todocomments</p></td> |
391 <td class="code">struct</td> |
392 <td width="585" valign="top"><p>"To do” comments</p></td> |
392 <td width="398" valign="top">Use of struct</td> |
393 </tr> |
393 </tr> |
394 <tr> |
394 <tr> |
395 <td width="294" valign="top" class="code"><p>trapcleanup</p></td> |
395 <td class="code">tcclasses</td> |
396 <td width="585" valign="top"><p>Use of LC function in TRAPs</p></td> |
396 <td width="398" valign="top">T classes inheriting from C classes</td> |
397 </tr> |
397 </tr> |
398 <tr> |
398 <tr> |
399 <td width="294" valign="top" class="code"><p>trapeleave</p></td> |
399 <td class="code">tclassdestructor</td> |
400 <td width="585" valign="top"><p>Trapping new(ELeave)</p></td> |
400 <td width="398" valign="top">T class has destructor</td> |
401 </tr> |
401 </tr> |
402 <tr> |
402 <tr> |
403 <td width="294" valign="top" class="code"><p>traprunl</p></td> |
403 <td class="code">todocomments</td> |
404 <td width="585" valign="top"><p>Trapping of (Do)RunL() rather than using RunError()</p></td> |
404 <td width="398" valign="top">"To do” comments</td> |
405 </tr> |
405 </tr> |
406 <tr> |
406 <tr> |
407 <td width="294" valign="top" class="code"><p>trspassing</p></td> |
407 <td class="code">trapcleanup</td> |
408 <td width="585" valign="top"><p>Passing TRequestStatus parameters by value</p></td> |
408 <td width="398" valign="top">Use of LC function in TRAPs</td> |
409 </tr> |
409 </tr> |
410 <tr> |
410 <tr> |
411 <td width="294" valign="top" class="code"><p>uids</p></td> |
411 <td class="code">trapeleave</td> |
412 <td width="585" valign="top"><p>Duplicate UIDs</p></td> |
412 <td width="398" valign="top">Trapping new(ELeave)</td> |
413 </tr> |
413 </tr> |
414 <tr> |
414 <tr> |
415 <td width="294" valign="top" class="code"><p>uncompressedaif</p></td> |
415 <td class="code">traprunl</td> |
416 <td width="585" valign="top"><p>Uncompressed AIFs in ROM</p></td> |
416 <td width="398" valign="top">Trapping of (Do)RunL() rather than using RunError()</td> |
417 </tr> |
417 </tr> |
418 <tr> |
418 <tr> |
419 <td width="294" valign="top" class="code"><p>uncompressedbmp</p></td> |
419 <td class="code">trspassing</td> |
420 <td width="585" valign="top"><p>Uncompressed bitmaps in ROM</p></td> |
420 <td width="398" valign="top">Passing TRequestStatus parameters by value</td> |
421 </tr> |
421 </tr> |
422 <tr> |
422 <tr> |
423 <td width="294" valign="top" class="code"><p>unicodesource</p></td> |
423 <td class="code">uids</td> |
424 <td width="585" valign="top"><p>Unicode source files</p></td> |
424 <td width="398" valign="top">Duplicate UIDs</td> |
425 </tr> |
425 </tr> |
426 <tr> |
426 <tr> |
427 <td width="294" valign="top" class="code"><p>userafter</p></td> |
427 <td class="code">uncompressedaif</td> |
428 <td width="585" valign="top"><p>Use of User::After</p></td> |
428 <td width="398" valign="top">Uncompressed AIFs in ROM</td> |
429 </tr> |
429 </tr> |
430 <tr> |
430 <tr> |
431 <td width="294" valign="top" class="code"><p>userfree</p></td> |
431 <td class="code">uncompressedbmp</td> |
432 <td width="585" valign="top"><p>Using User::Free directly</p></td> |
432 <td width="398" valign="top">Uncompressed bitmaps in ROM</td> |
433 </tr> |
433 </tr> |
434 <tr> |
434 <tr> |
435 <td width="294" valign="top" class="code"><p>userWaitForRequest</p></td> |
435 <td class="code">unicodesource</td> |
436 <td width="585" valign="top"><p>Use of User::WaitForRequest</p></td> |
436 <td width="398" valign="top">Unicode source files</td> |
437 </tr> |
437 </tr> |
438 <tr> |
438 <tr> |
439 <td width="294" valign="top" class="code"><p>variablenames</p></td> |
439 <td class="code">userafter</td> |
440 <td width="585" valign="top"><p>Local variables with member/argument names</p></td> |
440 <td width="398" valign="top">Use of User::After</td> |
441 </tr> |
441 </tr> |
442 <tr> |
442 <tr> |
443 <td width="294" valign="top" class="code"><p>voidparameter</p></td> |
443 <td class="code">userfree</td> |
444 <td width="585" valign="top"><p>Void parameter explicitly declared</p></td> |
444 <td width="398" valign="top">Using User::Free directly</td> |
445 </tr> |
445 </tr> |
446 <tr> |
446 <tr> |
447 <td width="294" valign="top" class="code"><p>worryingcomments</p></td> |
447 <td class="code">userWaitForRequest</td> |
448 <td width="585" valign="top"><p>Worrying comments</p></td> |
448 <td width="398" valign="top">Use of User::WaitForRequest</td> |
|
449 </tr> |
|
450 <tr> |
|
451 <td class="code">variablenames</td> |
|
452 <td width="398" valign="top">Local variables with member/argument names</td> |
|
453 </tr> |
|
454 <tr> |
|
455 <td class="code">voidparameter</td> |
|
456 <td width="398" valign="top">Void parameter explicitly declared</td> |
|
457 </tr> |
|
458 <tr> |
|
459 <td class="code">worryingcomments</td> |
|
460 <td width="398" valign="top">Worrying comments</td> |
449 </tr> |
461 </tr> |
450 </table> |
462 </table> |
451 <p> </p> |
463 </p> |
452 <h3><a name="cs_Projects" id="cs_Projects"></a>CodeScanner for projects </h3> |
464 <h3><a name="cs_Projects" id="cs_Projects"></a>CodeScanner for projects </h3> |
453 <p>CodeScanner options can also be set at the project level in the <a href="pref_codescanner_01.htm#cs_Projects">Properties</a> window. Right-click the project and choose <strong>Properties</strong>, then select the <strong>Carbide.c++ > Carbide CodeScanner</strong> element in the properties list. Click a tab to view the appropriate page and set its options. </p> |
465 <p>CodeScanner options can also be set at the project level in the <a href="pref_codescanner_01.htm#cs_Projects">Properties</a> window. Right-click the project and choose <strong>Properties</strong>, then select the <strong>Carbide.c++ > Carbide CodeScanner</strong> element in the properties list. Click a tab to view the appropriate page and set its options. </p> |
454 <p align="left">CodeScanner options specific to the project:</p> |
466 <p align="left">CodeScanner options specific to the project:</p> |
455 <table width="700" |
467 <table width="700" |
456 border="0" cellpadding="2" cellspacing="0"> |
468 border="0" cellpadding="2" cellspacing="0"> |