Feature Request: Hashed Based Assertion

bitwise via Digitalmars-d digitalmars-d at puremagic.com
Fri Nov 27 12:00:13 PST 2015


On Friday, 27 November 2015 at 18:51:54 UTC, tcak wrote:
> On Friday, 27 November 2015 at 16:18:52 UTC, bitwise wrote:
>> On Friday, 27 November 2015 at 08:09:27 UTC, tcak wrote:
>>> Yours are not helping, making everything more complex.
>>
>> Yes, because to achieve what you're asking for, you NEED a 
>> complex solution.
>>
>> The code WILL change with every release..thats the point of a 
>> release.. so any hashing mechanism like you're describing will 
>> just trigger every time, making it useless. Even if this was 
>> not the case, you still wouldn't know where the changes were.
>>
>>     Bit
>
> Let me explain:
>
> It is not complex. What makes it complex is that you envision a 
> very detailed thing.
>
> Hash of a Function = MD5( Token List of Function /* but ignore 
> comments */ );
>
>
> You do not have to know where the changes are. You need to know 
> what has changed,
> how it acts currently briefly.
>
>
> If behaviour of code changes, it is good that you know it. With 
> above hashing method, a piece of code that hasn't changed would 
> have same hash value always. And
> if you do not like it, don't check the hash value. Just 
> continue writing your codes as you wish. But in business 
> perspective, if the software's consistency is worth millions of 
> dollars, a software engineer would want it to be giving error 
> whenever
> codes change. Do we want D to be a child language, or have more 
> useful features?

Your approach is prone to false positives.

if(1) doSomething();
if(1) { doSomething(); }

Same behaviour, different code.
I hope you have a heck of a coding standard written up ;)

Worse still, consider the following example:

void foo() { if(bar()) deleteSomeFiles(); }
int bar() { return 0; }

Your proposed approach would not notify you that foo(), a 
potentially dangerous function, has changed it's behaviour if 
someone made bar() return 1.

*insert witty comeback to your comment about "business 
perspective" here*

     Bit



More information about the Digitalmars-d mailing list