Hello guys,
another quick question: should static analysis work against contracts defined for interfaces? here's a quick example:
[ContractClass(typeof(PersonContract))]
public interface IPerson
{
String FirstName { get; }
String LastName { get; }
void ChangeName(String firstName, String lastName);
}
[ContractClassFor(typeof(IPerson))]
public class PersonContract:IPerson
{
public string FirstName
{
get { return CodeContract.Result<String>(); }
}
public string LastName
{
get { return CodeContract.Result<String>(); }
}
public void ChangeName(string firstName, string lastName)
{
CodeContract.Requires(firstName != null);
CodeContract.Requires(lastName != null);
}
}
public class Person:IPerson
{
private String _firstName;
private String _lastName;
public String FirstName
{
get { return _firstName; }
}
public String LastName
{
get { return _lastName; }
}
public void ChangeName(string firstName, string lastName)
{
_firstName = firstName;
_lastName = lastName;
}
}
Should the following code be caught during static analysis:
var p = new Person();
p.ChangeName(null, null);
As you might guess, static analysis isn't picking this on my machine...
thanks again
Luis Abreu