Hi,

On 10 Apr 2012, at 21:31, Stéphane Ducasse wrote:

>> 
>> I do not get it. You want an identifier. Why is a brittle and
>> obfuscated number better than the name of the class, which is already
>> a proper identifier? If you do not want to rely directly on a class
>> reference, you can store it as a symbol.
> 
> sure this is not the problem numbers solve. We want to have no impact because 
> of class name change.
> 
>> If you keep the numbering,
>> you will immediately get into numbering issues as soon as people will
>> start writing their own rules.
> 
> Normally not because number should be unique and should never change. But I 
> see your point
> After we have a version number when we change a rule
>       for example rule 1 version 1 is different from rule 1 version 2
> 
> How you scenario behave in presence of class renaming?
> Our is stable but indeed people can add number that clashes with existing 
> ones. Now we should have a rule stating that rule should have unique id.

Rules are effective when they are like specific, not when they are generic. So, 
we should expect (and encourage) people to write their own rules for their own 
context. There is no way in which you could get a numbering scheme to fit a 
hundred different projects and still have an understandable situation.

In my scenario, if someone renamed a SmallLint rule but the false positives 
still refer to the old one, the false positives from the manifest would simply 
get ignored. On top of that, we could add a meta-rule that says that all 
manifest rules should have a corresponding SamllLint rule.


>>>> - In the rule methods, you are storing strings. This means that when 
>>>> someone renames a rule, the code in there will not be updated. Why not 
>>>> store this information as normal code and use symbols that can be queried?
>>> 
>>> I do not get it? It is normal code no?
>>> You mean symbols instead of strings.
>> 
>> I mean you are currently storing the following in a rule exception:
>> rule24V1FalsePositive
>> ^ #(#('(RGMethodDefinition className: ''RGClassDefinitionTest''
>> selector: #testReadFrom isMetaSide: false)'
>> #'2012-04-02T11:31:59.933+02:00') )
>> 
>> This an array of strings, not code. I was wondering why it would not
>> be possible to be code directly.
> 
> because we do not want to store information that force us to have ring loaded.

Why not:

'(RGMethodDefinition className: ''RGClassDefinitionTest'' selector: 
#testReadFrom isMetaSide: false)'

==>

(Smalltalk at: #RGMethodDefinition) className: ''RGClassDefinitionTest'' 
selector: #testReadFrom isMetaSide: false

Cheers,
Doru


> Cheers,
>> Doru
>> 
>> 
>>> We will the issues.
>>> 
>>> 
>>>> 
>>>> Cheers,
>>>> Doru
>>>> 
>>>> 
>>>> 
>>>> On 6 Apr 2012, at 09:51, Simon Allier wrote:
>>>> 
>>>>> Hi pharoers
>>>>> 
>>>>> Since a couple of months the Pharo team has been working on improving the 
>>>>> support for rules checking and in particular the handling of false 
>>>>> positives (there is nothing more boring that to get all the time the same 
>>>>> warnings that we know are not adequate).
>>>>> We added a manifest mechanism to manage the false/true positive of 
>>>>> SmallLint, the rule checker of Pharo. A manifest is a class that contains 
>>>>> meta data. In the future we may add package license and package 
>>>>> documentation. This data is stored in  methods on the meta side of the 
>>>>> class. So, manifest can be versioned in Monticello and not lost. There is 
>>>>> one manifest per package.
>>>>> 
>>>>> It possible to use SmallLint with Manifest using the Critics Browser 
>>>>> (menuWorld > Tool > CriticBrowser). With the Critics browser you can 
>>>>> inspect violations of rules and mark them as false positive or true 
>>>>> positive (ToDo) and see previous warnings flagged as false positives or 
>>>>> toDo.
>>>>> In addition all the logic of the browser has been developed so that the 
>>>>> manifest can be saved within the package without adding dependencies.
>>>>> We will continue to improve the Browser. In addition we will run 
>>>>> SmallLint rules to all the Pharo packages and the rules checking will be 
>>>>> part of the package validation. We want the community to use rule 
>>>>> checking for real so that we all improve.
>>>>> 
>>>>> Simon and Stef
>>>>> 
>>>>> Gofer
>>>>>  new
>>>>>  url: 'http://www.squeaksource.com/PharoTaskForces';
>>>>>  package: 'ConfigurationOfManifest';
>>>>> load.
>>>>> ((Smalltalk at: #ConfigurationOfManifest) project version: #stable) load
>>>> 
>>>> --
>>>> www.tudorgirba.com
>>>> 
>>>> "Not knowing how to do something is not an argument for how it cannot be 
>>>> done."
>>>> 
>>>> 
>>> 
>>> 
>> 
>> 
>> 
>> -- 
>> www.tudorgirba.com
>> 
>> "Every thing has its own flow"
>> 
> 
> 

--
www.tudorgirba.com

"We are all great at making mistakes."








Reply via email to