Welcome to mirror list, hosted at ThFree Co, Russian Federation.

NEWS « gendarme - github.com/mono/mono-tools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 58fef2c925d6f3a4ecb085ef129645bee5f23baa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
2009-01-20  Version 2.4

	This release was the shortest (about 2 months) release cycle ever
	for Gendarme. Nevertheless it contains a lot of enhancements for
	rules builders (e.g. logging support, makefile helpers) provided
	by Jesse Jones.

	This release also includes 12 new rules (195 rules total):

	Gendarme.Rules.BadPractice
	* PreferEmptyInstanceOverNullRule [Cedric Vivier]

	Gendarme.Rules.Correctness
	* DoNotRecurseInEqualityRule [Jesse Jones]
	* EnsureLocalDisposalRule [Cedric Vivier]
	* ProvideCorrectRegexPatternRule [Cedric Vivier]
	* ReviewInconsistentIdentityRule [Jesse Jones]

	Gendarme.Rules.Design.Generic
	* DoNotExposeNestedGenericSignaturesRule [Sebastien Pouliot]

	Gendarme.Rules.Exceptions
	* DoNotThrowInUnexpectedLocationRule [Jesse Jones]

	Gendarme.Rules.Maintainability
	* AvoidAlwaysNullFieldRule [Jesse Jones]

	Gendarme.Rules.Naming
	* AvoidTypeInterfaceInconsistencyRule [Sebastien Pouliot]

	Gendarme.Rules.Performance
	* PreferCharOverloadRule [Sebastien Pouliot]

	Gendarme.Rules.Security
	* DoNotShortCircuitCertificateChecksRule [Sebastien Pouliot]

	Gendarme.Rules.Smells
	* AvoidSwitchStatementsRule [Nestor Salceda]

	Contributors for this release are:
	Andres G. Aragoneses, Cedric Vivier, JB Evain, Jesse Jones, 
	Nestor Salceda, Sebastien Pouliot.

2008-11-10  Version 2.2

	This release includes the development results of the last four 
	months, including some major events like the Novell Hack Week 3
	and the second half of GSoC 2008 work done by Nestor Salceda.

	Major highlights includes:

	* improvement to the framework by the addition of engines that
	can build extra information to extend the model Cecil gives us
	to work with.

	* New [FxCopCompatibility] attribute to match between Gendarme
	and FxCop rules. This will be used to support [SuppressMessage]
	inside assemblies in a future release.

	* New TearDown capability on rules and runners allow rules to
	defer the reporting of defects until the analysis is completed.

	* New "Audit" severity. This is used to denotate defects that,
	too often, can't be fixed (i.e. will always be reported) but 
	needs to be audited (e.g. security items).

	* By default the console runner now reports only when both
	  Severity > Low
		i.e. skipping Low and Audit severity defects
	  Confidence > Low
		i.e. skipping Low confidence defects

	This is to help reduce false positives and get smaller reports 
	with the most important defects. You can override both option, 
	with lower or higher values, with new command switches. E.g.

		gendarme --severity=audit,critical ...
		gendarme --confidence=all ...

	* The wizard runner is now, by default, limited to 1000 defects
	on the visible API and will, like the console runner, report 
	only defects when both Severity > Low and Confidence > Low. A 
	new step in the	wizard allow users to change those settings 
	before the analysis (defaults can be modified and saved).

	* You can now save your rule selection as the new default in 
	the wizard. The same set will be enable next time you restart
	the wizard. 
		* Known issue: does not work under Mono, bug #439943

	and a lot of new rules including:

	Gendarme.Rules.BadPractice
	* AvoidAssemblyVersionMismatchRule [Sebastien Pouliot]
	* DoNotUseGetInterfaceToCheckAssignabilityRule [Sebastien Pouliot]

	Gendarme.Rules.Concurrency
	* DoNotUseMethodImplOptionsSynchronizedRule [Sebastien Pouliot]
	* ReviewLockUsedOnlyForOperationsOnVariablesRule [Cedric Vivier]
	* ProtectCallToEventDelegatesRule [Sebastien Pouliot]

	Gendarme.Rules.Correctness
	* AttributeStringLiteralsShouldParseCorrectlyRule [Nestor Salceda]
	* CheckParametersNullityInVisibleMethodsRule [Sebastien Pouliot]
	* ProvideCorrectArgumentsToFormattingMethodsRule [Nestor Salceda]
	* ReviewCastOnIntegerDivisionRule [Sebastien Pouliot]
	* ReviewCastOnIntegerMultiplicationRule [Sebastien Pouliot]

	Gendarme.Rules.Design
	* AvoidSmallNamespaceRule [Sebastien Pouliot]
	* ConsiderAddingInterfaceRule [Cedric Vivier]
	* DeclareEventHandlersCorrectlyRule [Nestor Salceda]
	* DoNotDeclareVirtualMethodsInSealedTypeRule [Sebastien Pouliot]
	* InternalNamespacesShouldNotExposeTypesRule [Sebastien Pouliot]
	* MarkAssemblyWithAssemblyVersionRule [Sebastien Pouliot]
	* MarkAssemblyWithCLSCompliantRule [Sebastien Pouliot]
	* MarkAssemblyWithComVisibleRule [Sebastien Pouliot]

	Gendarme.Rules.Design.Generic
	* AvoidMethodWithUnusedGenericTypeRule [Sebastien Pouliot]
	* UseGenericEventHandlerRule [Sebastien Pouliot]
	* PreferGenericsOverRefObjectRule [Sebastien Pouliot]

	Gendarme.Rules.Design.Linq
	* AvoidExtensionMethodOnSystemObjectRule [Sebastien Pouliot]

	Gendarme.Rules.Exceptions
	* InstantiateArgumentExceptionCorrectlyRule [Nestor Salceda]

	Gendarme.Rules.Interoperability
	* MarshalBooleansInPInvokeDeclarationsRule [Sebastien Pouliot]

	Gendarme.Rules.Naming
	* AvoidDeepNamespaceHierarchyRule [Sebastien Pouliot]
	* AvoidRedundancyInMethodNameRule [Cedric Vivier]
	* AvoidRedundancyInTypeNameRule [Cedric Vivier]

	Gendarme.Rules.Performance
	* AvoidUnneededFieldInitializationRule [Sebastien Pouliot]
	* PreferLiteralOverInitOnlyFieldsRule [Sebastien Pouliot]

	Gendarme.Rules.Security.Cas
	* ReviewSuppressUnmanagedCodeSecurityUsageRule [Sebastien Pouliot]

	Gendarme.Rules.Serialization
	* MarkEnumerationsAsSerializableRule [Sebastien Pouliot]

	Gendarme.Rules.Smells
	* AvoidMessageChainsRule [Nestor Salceda]

	Lots of rules have been updated and, in a few cases, renamed or
	moved, to provide extended functionalities.

	Move/merge changes:
	* CAS-related Security rules were moved into Security.Cas
	* DisposableFieldsShouldBeDisposedRule was moved from Design 
	into Correctness
	* EnumNotEndsWithEnumOrFlagsSuffixRule was merged with 
	UseCorrectSuffixRule (Naming)
	* FinalizersShouldCallBaseClassFinalizerRule was moved from 
	Design into Correctness
	* ImplementGenericCollectionInterfacesRule was moved from 
	Design into Design.Generic

	Contributors for this release are:
	Peter Johanson, Nestor Salceda, Cedric Vivier, Jesse Jones, 
	Alan McGovern, Sebastien Pouliot.

2008-07-14  Version 0.2.0.0

	This release includes the development results of the last six 
	months, including some major events like the Novell Hack Week 
	(Winter 2008 edition), which changed much of the Gendarme 
	framework, the first "Gendarme Rule Day" and the first part of
	GSoC 2008 work by Nestor Salceda.

	General highlights:

	* Performance enhancements, memory usage reduction (mostly 
	inside Cecil but the gains are very visible in Gendarme)
	* MDB/PDB support: source files and line numbers are now 
	provided with defects [Sebastien Pouliot]
	* New Windows installer: You can now easily enjoy Gendarme, and 
	it's wizard, from Windows computers [Sebastien Pouliot]
	* .desktop file for the Wizard runner [Daniel Nauck]
	* Console runner now uses color when displaying on the console
	[Cedric Vivier]
	* Albeit a bit invisible to end users, we started using the new
	unit test helpers made during GHOP [Daniel Abramov]
	* Bug fixes: works continue, like previous releases, to remove
	false positives from existing rules;
	
	and a lot of new rules including:

	Gendarme.Rules.BadPractice
	* AvoidCallingProblematicMethodsRule [Nestor Salceda]
	* AvoidVisibleConstantFieldRule [Sebastien Pouliot]
	* DoNotForgetNotImplementedMethodsRule [Cedric Vivier]
	* DisableDebuggingCodeRule [Sebastien Pouliot]
	* ObsoleteMessagesShouldNotBeEmptyRule [Sebastien Pouliot]
	* ReplaceIncompleteOddnessCheckRule [Sebastien Pouliot]

	Gendarme.Rules.Concurrency
	* DoNotLockOnThisOrTypesRule [Sebastien Pouliot]
	* DoNotLockOnWeakIdentityObjectsRule [Sebastien Pouliot]
	* DoNotUseLockedRegionOutsideMethodRule [Andres G. Aragoneses]

	Gendarme.Rules.Correctness
	* DoNotRoundIntegersRule [Sebastien Pouliot]
	* ReviewDoubleAssignmentRule [Sebastien Pouliot]
	* ReviewSelfAssignmentRule [Sebastien Pouliot]
	* ReviewUselessControlFlow [Sebastien Pouliot]
	* ReviewUseOfInt64BitsToDoubleRule [Sebastien Pouliot]
	* ReviewUseOfModuloOneOnIntegersRule [Sebastien Pouliot]

	Gendarme.Rules.Design
	* AvoidMultidimensionalIndexerRule [Sebastien Pouliot]
	* AvoidRefAndOutParametersRule [Sebastien Pouliot]
	* AvoidVisibleNestedTypesRule [Sebastien Pouliot]
	* ConsiderConvertingFieldToNullableRule [Cedric Vivier]
	* ConsiderUsingStaticTypeRule.cs [Sebastien Pouliot]
	* ImplementGenericCollectionInterfacesRule [Daniel Abramov]
	* ImplementIComparableCorreclyRule [Sebastien Pouliot]
	* PreferIntegerOrStringForIndexersRule [Sebastien Pouliot]

	Gendarme.Rules.Exception
	* AvoidArgumentExceptionDefaultConstructorRule [Sebastien Pouliot]
	* AvoidThrowingBasicExceptionsRule [Daniel Abramov]
	* DoNotThrowReservedExceptionRule [Sebastien Pouliot]
	* ExceptionShouldBeVisibleRule [Sebastien Pouliot]
	* MissingExceptionConstructorsRule [Sebastien Pouliot]

	Gendarme.Rules.Interoperability
	* DoNotCastIntPtrToInt32Rule [Sebastien Pouliot]

	Gendarme.Rules.Maintainability (new)
	* AvoidComplexMethodsRule [Cedric Vivier]
	* AvoidDeepInheritanceTreeRule [Sebastien Pouliot]
	* AvoidLackOfCohesionOfMethodRule [Cedric Vivier]
	* ConsiderUsingStopwatchRule [Cedric Vivier]
	* PreferStringIsNullOrEmptyRule [Sebastien Pouliot]

	Gendarme.Rules.Naming
	* DoNotPrefixEventsWithAfterOrBeforeRule [Sebastien Pouliot]

	Gendarme.Rules.Performance
	* AvoidLargeNumberOfLocalVariablesRule [Sebastien Pouliot]
	* AvoidLargeStructureRule [Sebastien Pouliot]
	* AvoidRepetitiveCastsRule [Sebastien Pouliot]
	* AvoidTypeGetTypeWhenPossibleRule [Sebastien Pouliot]
	* AvoidUnusedPrivateFieldsRule [Sebastien Pouliot]
	* AvoidUnneededUnboxingRule [Sebastien Pouliot]
	* AvoidUnsealedUninheritedInternalClassesRule [Scott Peterson]
	* ImplementEqualsTypeRule [Sebastien Pouliot]
	* OverrideValueTypeDefaultsRule [Sebastien Pouliot]
	* RemoveUnusedLocalVariablesRule [Sebastien Pouliot]
	* UseIsOperatorRule [Seo Sanghyeon]
	* UseTypeEmptyTypesRule [JB Evain]

	Gendarme.Rules.Portability
	* DoNotHardcodePathsRule [Daniel Abramov]

	Gendarme.Rules.Serialization (new)
	* CallBaseMethodsOnISerializableTypesRule [Nestor Salceda]
	* DeserializeOptionalFieldRule [Sebastien Pouliot]
	* ImplementISerializableCorrectlyRule [Nestor Salceda]
	* MarkAllNonSerializableFieldsRule [Nestor Salceda]
	* MissingSerializableAttributeOnISerializableTypeRule [Sebastien Pouliot]
	* MissingSerializationConstructorRule [Sebastien Pouliot]
	* UseCorrectSignatureForSerializationMethodsRule [Sebastien Pouliot]

	Contributors for this release are:
	Andres G. Aragoneses, Cedric Vivier, Daniel Abramov, JB Evain,
	Nestor Salceda, Scott Peterson, Sebastien Pouliot, Seo Sanghyeon.

2008-01-31  Version 0.0.5

	This time Google Highly Open Participation (GHOP) was the main 
	source of new rules for Gendarme (Daniel Abramov, Andreas Noever,
	Adrian Tsai) and even a Gendarme logo (Steve P). 
	Many thanks to all of them and to Google!

	Other news includes:

	* More rules: while GHOP added 40 rules, other contributors added
	7 more rules.
	* Gendarme.Framework.Rocks: A new namespace, inside gendarme's
	framework, introduce several extensions methods to ease rule 
	creation and avoid code duplication.
	* Updated rules to be more friendly toward C# 3 code (e.g. 
	auto-implemented properties)
	* Enhancements to existing rules to reduce false-positives. Even
	with all the new rules the number of false-positives is lower
	than before and Gendarme's self-test looks even better!

	New rules by alphabetical order:

	Gendarme.Rules.BadPractice
	* CheckNewExceptionWithoutThrowingRule [Andreas Noever]
	* CheckNewThreadWithoutStartRule [Andreas Noever]
	* ConstructorShouldNotCallVirtualMethodsRule [Daniel Abramov]
	* GetEntryAssemblyMayReturnNullRule [Daniel Abramov]

	Gendarme.Rules.Concurrency
	* NonConstantStaticFieldsShouldNotBeVisible [Andreas Noever]

	Gendarme.Rules.Correctness
	* DontCompareWithNaNRule [Sebastien Pouliot]

	Gendarme.Rules.Design
	* AbstractTypesShouldNotHavePublicConstructorsRule [Sebastien Pouliot]
	* AttributeArgumentsShouldHaveAccessors [Daniel Abramov]
	* AvoidEmptyInterfaceRule [Sebastien Pouliot]
	* AvoidPropertiesWithoutGetAccessorRule [Sebastien Pouliot]
	* AvoidPublicInstanceFieldsRule [Adrian Tsai]
	* ConsiderConvertingMethodToPropertyRule [Adrian Tsai]
	* DisposableFieldsShouldBeDisposedRule [Andreas Noever]
	* DisposableTypesShouldHaveFinalizerRule [Andreas Noever]
	* EnsureSymmetryForOverloadedOperatorsRule [Andreas Noever]
	* EnumsShouldDefineAZeroValueRule [Sebastien Pouliot]
	* FinalizersShouldBeProtectedRule [Daniel Abramov]
	* FinalizersShouldCallBaseClassFinalizerRule [Daniel Abramov]
	* FlagsShouldNotDefineAZeroValueRule [Sebastien Pouliot]
	* MainShouldNotBePublicRule [Daniel Abramov]
	* MissingAttributeUsageOnCustomAttributeRule [Daniel Abramov]
	* OperatorEqualsShouldBeOverloadedRule [Andreas Noever]
	* OverrideEqualsMethodRule [Andreas Noever]
	* ProvideAlternativeNamesForOperatorOverloadsRule [Andreas Noever]
	* TypesShouldBeInsideNamespacesRule [Sebastien Pouliot]
	* TypesWithDisposableFieldsShouldBeDisposableRule [Andreas Noever]
	* TypesWithNativeFieldsShouldBeDisposableRule [Andreas Noever]

	Gendarme.Rules.Interoperability (new)
	* GetLastErrorMustBeCalledRightAfterPInvokeRule [Andreas Noever]
	* MarshalStringsInPInvokeDeclarationsRule [Daniel Abramov]
	* PInvokeShouldNotBeVisibleRule [Andreas Noever]
	* UseManagedAlternativesToPInvokeRule [Daniel Abramov]

	Gendarme.Rules.Naming
	* DoNotPrefixValuesWithEnumNameRule [Andreas Noever]
	* DoNotUseReservedInEnumValueNamesRule [Andreas Noever]
	* ParameterNamesShouldMatchOverridenMethodRule [Andreas Noever]
	* UseCorrectCasing [Daniel Abramov]
	* UseCorrectPrefixRule [Daniel Abramov]
	* UseCorrectSuffixRule [Daniel Abramov]
	* UsePreferredTermsRule [Daniel Abramov]

	Gendarme.Rules.Performance
	* AvoidReturningArraysOnPropertiesRule [Adrian Tsai]
	* AvoidUnsealedConcreteAttributesRule [Daniel Abramov]

	Gendarme.Rules.Portability
	* ExitCodeIsLimitedOnUnixRule [Daniel Abramov]
	* FeatureRequiresRootPrivilegeOnUnixRule [Andreas Noever]
	* MonoCompatibilityReviewRule [Andreas Noever]

	Gendarme.Rules.Security
	* ArrayFieldsShouldNotBeReadOnlyRule [Andreas Noever]
	* NativeFieldsShouldNotBeVisibleRule [Andreas Noever]
	* StaticConstructorsShouldBePrivateRule [Daniel Abramov]

	Gendarme.Rules.Ui
	* UseSTAThreadAttributeOnSWFEntryPointsRule [Daniel Abramov]

2007-12-20  Version 0.0.4

	After a long time, many fixes, useful features (e.g. inclusion and 
	exclusion) and hours trimming down false positives, we're proud to
	announce Gendarme 0.0.4!

	Many of the new rules were contributed during the Google Summer
	of Code 2007.

	Gendarme.Rules.BadPractice
	* CloneMethodShouldNotReturnNullRule [Nidhi Rawal]
	* EqualShouldHandleNullArgRule [Nidhi Rawal]
	* ImplementingEqualsButNotGetHashCodeAndViceVersaRule [Nidhi Rawal]
	* ToStringReturnsNullRule [Nidhi Rawal]

	Gendarme.Rules.Concurrency
	* WriteStaticFieldFromInstanceMethodRule [Sebastien Pouliot]

	Gendarme.Rules.Correcness
	* AvoidConstructorsInStaticTypesRule [Lukasz Knop]
	* CallingEqualsWithNullArgRule [Nidhi Rawal]
	* FloatComparisonRule [Lukasz Knop]
	* MethodCanBeMadeStaticRule [JB Evain]
	* UseValueInPropertySetterRule [Lukasz Knop]

	Gendarme.Rules.Design (new)
	* DontDeclareProtectedFieldsInSealedClassRule [Nidhi Rawal]
	* UsingCloneWithoutImplementingICloneableRule [Nidhi Rawal]

	Gendarme.Rules.Exceptions
	* DontSwallowErrorsCatchingNonspecificExceptionRule [Nestor Salceda]

	Gendarme.Rules.Naming (new)
	* AttributesEndsWithAttributeSuffixRule [Nestor Salceda]
	* DetectNonAlphaNumericsInTypeNamesRule [Nidhi Rawal]
	* EnumsNotEndsWIthEnumOrFlagsSuffixRule [Nestor Salceda]
	* UsePluralNameInEnumFlagsRule [Nestor Salceda]
	* UseSingularNameInEnumsUnlessAreFlagsRule [Nestor Salceda]

	Gendarme.Rules.Performance
	* AvoidToStringOnStringRule [Lukasz Knop]
	* AvoidUncalledPrivateCodeRule [Nidhi Rawal]
	* AvoidUninstantiatedInternalClassesRule [Nidhi Rawal]
	* AvoidUnusedParametersRule [Nestor Salceda]
	* DontIgnoreMethodResultRule [Lukasz Knop]

	Gendarme.Rules.Smells (new)
	* AvoidCodeDuplicatedInSameClassRule [Nestor Salceda]
	* AvoidCodeDuplicatedInSiblingClassesRule [Nestor Salceda]
	* AvoidLargeClassRule [Nestor Salceda]
	* AvoidLongMethodsRule [Nestor Salceda]
	* AvoidLongParameterListsRule [Nestor Salceda]
	* AvoidSpeculativeGeneralityRule [Nestor Salceda]

	Gendarme.Rules.Ui (new)
	* GtkSharpExecutableTargetRule [Sebastien Pouliot]
	* SystemWindowsFormsExecutableTargetRule [Sebastien Pouliot]

	A special thanks to Nestor Salceda for his continuing dedication 
	to the project including a lot of "not so fun" (but so important)
	tasks, like merging, rule documentation & bug hunting. You rock!

2006-10-16  Version 0.0.3

	* New rule for String.Empty [Sebastien Pouliot]
	* New XML and HTML (via XSL transform) output [Christian Birkl, 
	Sebastien Pouliot]
	* Updated to latest Cecil API [JBEvain]

2006-06-19  Version 0.0.2

	* Aaron Tomb added new rules for Concurrency and Correctness (based 
	on his works in Google's Summer of Code 2005) and updated the 
	framework;
	* Russell Morris added new rules for exceptions management.

2005-11-03  Version 0.0.1

	* Initial version. Expect everything to change before 0.0.2 ;-)