dalehenrich / filetree

Monticello repository for directory-based Monticello packages enabling the use of git, svn, etc. for managing Smalltalk source code.
https://github.com/CampSmalltalk/Cypress
MIT License
133 stars 26 forks source link

Pharo5.0 code critic errors/issues #156

Open dalehenrich opened 9 years ago

dalehenrich commented 9 years ago
Validation Report: 15456 Load latest version of metacello
Failure
8 Errors 9 Warnings
Validation Setup
Image Version   50212
OS Version  an UnixPlatform
VM Version  NBCoInterpreter NativeBoost-CogPlugin-EstebanLorenzano.21 uuid: 4d9b9bdf-2dfa-4c0b-99eb-5b110dadc697 Apr 2 2015 NBCogit NativeBoost-CogPlugin-EstebanLorenzano.21 uuid: 4d9b9bdf-2dfa-4c0b-99eb-5b110dadc697 Apr 2 2015 https://github.com/pharo-project/pharo-vm.git Commit: 32d18ba0f2db9bee7f3bdbf16bdb24fe4801cfc5 Date: 2015-03-24 11:08:14 +0100 By: Esteban Lorenzano Jenkins build #14904
Loaded Case     CASE 15456 configuration of PharoMetacello (pharo50)
Issue Status    Work Needed (Failing Test)
Jenkins Job jenkins-Pharo-5.0-Issue-Validator-10033
Errors and Failures

    References an undeclared variable 2
    Checks for references to a undeclared variables

    MetacelloPlatform>>#fileDirectoryClass, MetacelloPlatform>>#suspendSystemUpdateEventsDuring:
    Unclassified methods 12
    All methods should be put into a protocol (method category) for better readability.

    MCFileTreeRepository>>#allFileNames, MCFileTreeRepository>>#allFileNamesForVersionNamed:, MCFileTreeRepository>>#basicStoreVersion:, MCFileTreeRepository>>#cachedFileNames, MCFileTreeRepository>>#canReadFileNamed:, MCFileTreeRepository>>#directory:, MCFileTreeRepository>>#filterFileNames:forVersionNamed:, MCFileTreeRepository>>#flushCache, MCFileTreeRepository>>#goferVersionFrom:, MCFileTreeRepository>>#versionFromFileNamed:, MCFileTreeRepository>>#versionInfoFromFileNamed:, MCFileTreeRepository>>#versionNameFromFileName:, MCFileTreeRepository>>#writeRepositoryProperties
    No class comment 1
    Classes should have comments to explain their purpose, collaborations with other classes, and optionally provide examples of use.

    MCFileTreeFileSystemUtils
    Methods equivalently defined in superclass
    Check for methods that are equivalent to their superclass methods.

    MCFileTreePackageStructureStWriter>>#writeClassDefinition:
    Method just sends super message
    Check for methods that just forward the message to its superclass.

    MCBitbucketRepository class>>#cacheDirectoryPath, MCGitHubRepository class>>#cacheDirectoryPath
    Subclass responsibility not defined
    Checks that all methods which send #subclassResponsibility, which indicates that they are abstract, are defined in all leaf classes.

    MetacelloIssueTestCase>>#projectName, MetacelloPlatform>>#downloadJSON:username:pass:, MetacelloPlatform>>#downloadZipArchive:to:
    Temporary variables not read AND written
    Checks that all temporary variables are both read and written.

    MCFileTreeStCypressReader>>#validateExtensionMethodCategory:for:selector:, MetacelloPharoCommonPlatform>>#downloadBasicFile:to:username:pass:
    MCModel2MTModelVisitorTest>>#testVisitXMLParserConfigurationWithVersion101

Warnings

    Refers to class name instead of "self class"
    Checks for direct reference to classes themselves.

    MCGitBasedNetworkRepository>>#resolveProjectVersionPattern:, MetacelloScriptingResource>>#baselineIssue215:, MetacelloScriptingResource>>#configuration098Issue215:, MetacelloScriptingResource>>#lockConfiguration15:
    Sends "questionable" message 1
    Check methods that send messages that perform low level things.

    ConfigurationOfGofer class>>#ensureMetacello, MCGitBasedNetworkRepository>>#canUpgradeTo:, MCGitBasedNetworkRepository>>#hasNoLoadConflicts:, MetacelloProjectRegistry>>#registerProjectRegistration:
    Sends different super message
    Checks for methods whose source sends a different super message.

    GoferReference>>#matchesMetacelloGoferPackage:
    Messages sent but not implemented
    Checks for messages that are sent by a method, but no class in the system implements such a message. Further checks if messages sent to self or super exist in the hierarchy, since these can be statically typed. Reported methods will certainly cause a doesNotUnderstand: message when they are executed.

    GoferReference>>#matchesMetacelloGoferPackage:, MCFileTreeRepository class>>#urlAsFileReference:
    Long methods 2
    Returns all methods that have #longMethodSize number of statements. This check counts statements, not lines.

    BaselineOfMetacello>>#baseline:, GoferReference>>#matchesMetacelloGoferPackage:, MCFileTreeStCypressReader>>#addMethodDefinitionsForClass:methodProperties:in:extensionMethod:, MCGitBasedNetworkRepository class>>#parseLocation:version:, MCGitBasedNetworkRepository class>>#parseProjectVersionField:desc:versionDelim:, MetacelloMCVersionSpec>>#packageSpecsInLoadOrderForMap:, MetacelloPackagesSpec>>#packageSpecsInLoadOrderFor:, MetacelloPackagesSpec>>#slideIn:spec:baseIndex:seen:firstTime:for:, MetacelloPackagesSpec>>#sortPackageSpecs:packageSpec:groupLoops:for:, MetacelloProjectRegistry>>#registerProjectRegistration:, MetacelloScriptingTestCase>>#setUpRepositories
    Uses "size = 0", "= nil" instead of "isEmpty" and "isNil"
    Checks for code using equality tests instead of the message sends.

    ConfigurationOfGofer class>>#lastMetacelloVersionLoad, GoferReference>>#matchesMetacelloGoferPackage:, MCGitBasedNetworkRepository>>#projectVersion, MetacelloGenericProjectSpec>>#mergeRepositoriesSpec:, MetacelloPackagesSpec>>#packageSpecsInLoadOrderFor:, MetacelloScriptingStandardTestHarness>>#validateExpectedConfigurationClassName:expectedConfigurationVersion:expectedConfigurationRepository:expectedBaselineClassName:expectedBaselineVersion:expectedBaselineRepository:, MetacelloScriptingStandardTestHarness>>#verifyPackageNotLoaded:
    Uses detect:ifNone: instead of contains:
    Checks for the common code fragment: "(aCollection detect: [:each | 'some condition'] ifNone: [nil]) ~= nil".

    BaselineOfMetacello>>#reprimeRegistryIssue197
    Empty exception handler
    Empty exception handler blocks hide potential bugs. The situation should be handled in a more robust way.

    MetacelloPlatform>>#clearPackageCache
    Uses or's instead of a searching literal
    Checks for repeated literal equalitity tests that should rather be implemented as a search in a literal collection.

    GoferReference>>#matchesMetacelloGoferPackage:, MCFileTreeStCypressReader>>#addMethodDefinitionsForClass:methodProperties:in:extensionMethod:

Console Output