Hi,

i have published a new version:
- the package Manifest-Core is split in two packages: Manifest-Core and 
Manifest-CriticBrowser.
- the unique identifier for a rule is now a string, not a number. For example, 
in the manifest we have ruleBadMessageRuleV1FalsePositive rather than 
ruleBadMessageRuleV1FalsePositive.

Simon

On Apr 10, 2012, at 9:57 PM, Tudor Girba wrote:

> 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