ProjectChecker.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 13 Feb 2012 18:51:07 +0000
branchjv
changeset 3020 240c299584af
parent 3019 4eb74fb0cae6
child 3022 d678b271a3f9
permissions -rw-r--r--
Improvements in project checker
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3012
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
     1
"
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
     3
              All Rights Reserved
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
     4
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
     5
 This software is furnished under a license and may be used
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
     6
 only in accordance with the terms of that license and with the
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
     8
 be provided or otherwise made available to, or used by, any
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
     9
 other person.  No title to or ownership of the software is
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
    10
 hereby transferred.
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
    11
"
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    12
"{ Package: 'stx:libbasic3' }"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    13
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    14
Object subclass:#ProjectChecker
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    15
	instanceVariableNames:'package packageDef classes methods problems'
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    16
	classVariableNames:''
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    17
	poolDictionaries:''
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    18
	category:'System-Support-Projects'
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    19
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    20
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    21
Object subclass:#Problem
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    22
	instanceVariableNames:'label description severity data'
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    23
	classVariableNames:''
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    24
	poolDictionaries:''
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    25
	privateIn:ProjectChecker
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    26
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    27
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    28
!ProjectChecker class methodsFor:'documentation'!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    29
3012
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
    30
copyright
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
    31
"
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
    32
 COPYRIGHT (c) 2006 by eXept Software AG
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
    33
              All Rights Reserved
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
    34
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
    35
 This software is furnished under a license and may be used
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
    36
 only in accordance with the terms of that license and with the
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
    37
 inclusion of the above copyright notice.   This software may not
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
    38
 be provided or otherwise made available to, or used by, any
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
    39
 other person.  No title to or ownership of the software is
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
    40
 hereby transferred.
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
    41
"
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
    42
!
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
    43
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    44
documentation
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    45
"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    46
    A simple project checker that can search whole projects or individual
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    47
    classes or methods for various problems. TBW...
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    48
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    49
    NOTE: Not yet finished. This code is meant as a single central entry for all the
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    50
    source code management tools like SCM Utilities, NewSystemBrowser ets. That code
3019
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    51
    will be refactored later once this tool prooves itself useful and mature enough.
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    52
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    53
    [author:]
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    54
        Jan Vrany <jan.vrany@fit.cvut.cz>
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    55
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    56
    [instance variables:]
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    57
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    58
    [class variables:]
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    59
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    60
    [see also:]
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    61
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    62
"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    63
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    64
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    65
examples
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    66
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    67
    "
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    68
        ProjectChecker check: 'stx:libbasic'
3019
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    69
        ProjectChecker check: 'stx:libtool'
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    70
        ProjectChecker check: 'stx:libbasic3'
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    71
    "
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    72
! !
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    73
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    74
!ProjectChecker class methodsFor:'checking'!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    75
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    76
check: package
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    77
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    78
    ^self new check: package
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    79
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    80
    "Created: / 11-01-2012 / 16:46:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    81
! !
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    82
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    83
!ProjectChecker methodsFor:'accessing'!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    84
3019
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    85
classes: aCollection
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    86
    classes := aCollection.
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    87
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    88
    "Created: / 13-02-2012 / 17:06:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    89
!
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    90
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    91
methods
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    92
    ^ methods
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    93
!
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    94
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    95
methods:something
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    96
    methods := something.
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    97
!
4eb74fb0cae6 Access methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3018
diff changeset
    98
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    99
package
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   100
    ^ package
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   101
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   102
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   103
package:packageId
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   104
    package := packageId.
3018
9eb47024eba1 added #problems to ProjectChecker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3012
diff changeset
   105
!
9eb47024eba1 added #problems to ProjectChecker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3012
diff changeset
   106
9eb47024eba1 added #problems to ProjectChecker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3012
diff changeset
   107
problems
9eb47024eba1 added #problems to ProjectChecker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3012
diff changeset
   108
    ^ problems
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   109
! !
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   110
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   111
!ProjectChecker methodsFor:'checking'!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   112
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   113
check
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   114
3020
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   115
    packageDef := ProjectDefinition definitionClassForPackage: package.
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   116
    packageDef isNil ifTrue:[
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   117
        self problem: 'Project definition class for package %1 does not exist (no further checks performed)'
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   118
             description: nil
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   119
             severity: #error.
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   120
        ^self    
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   121
    ].
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   122
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   123
    self
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   124
        checkPackage;
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   125
        checkClasses;
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   126
        checkMethods
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   127
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   128
    "Created: / 11-01-2012 / 16:47:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   129
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   130
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   131
check: package
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   132
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   133
    self package: package.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   134
    self check.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   135
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   136
    "Created: / 11-01-2012 / 16:47:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   137
! !
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   138
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   139
!ProjectChecker methodsFor:'checks-individual'!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   140
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   141
checkClassListConsistency
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   142
    "Checks whether all classes listed in #classNamesAndAttributes are present
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   143
    and if all present classes are listed"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   144
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   145
    |classesInImage classesInDescription missingPools onlyInImage onlyInDescription|
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   146
    "WARNING: Copy/paste of ProjectDefinition>>validateDescription"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   147
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   148
    classesInImage := Smalltalk allClasses select:[:cls | (cls package = self package) and:[cls isPrivate not]].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   149
    "/ classesInDescription := self classes asIdentitySet.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   150
    classesInDescription := IdentitySet new.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   151
    ((packageDef compiled_classNamesForPlatform:(OperatingSystem platformName))
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   152
    , (packageDef compiled_classNames_common)
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   153
    , (packageDef autoloaded_classNames)) do:[:nm |
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   154
        |cls|
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   155
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   156
        cls := Smalltalk at:nm asSymbol.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   157
        cls isNil ifTrue:[
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   158
            self problem: 'Missing class ', nm 
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   159
                 description: 'A class is listed in project definition but not present in the system'
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   160
                 severity: #error
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   161
        ] ifFalse:[
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   162
            classesInDescription add:cls.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   163
        ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   164
    ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   165
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   166
    missingPools := Set new.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   167
    classesInDescription do:[:eachClass |
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   168
        eachClass sharedPoolNames do:[:eachPoolName |
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   169
            |pool|
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   170
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   171
            pool := eachClass nameSpace classNamed:eachPoolName.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   172
            pool isNil ifTrue:[
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   173
                eachClass nameSpace ~~ Smalltalk ifTrue:[
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   174
                    pool := Smalltalk classNamed:eachPoolName.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   175
                ]
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   176
            ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   177
            pool isNil ifTrue:[
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   178
                self 
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   179
                    problem:'Missing pool: ',eachPoolName 
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   180
                    description: ('Class %1 uses a pool named %2 but it does not exists' bindWith: eachClass with: pool)
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   181
                    severity: #error data: eachClass.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   182
                missingPools add:eachPoolName.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   183
            ] ifFalse:[
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   184
                pool isSharedPool ifFalse:[
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   185
                    self 
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   186
                        problem:'Missing pool: ',eachPoolName 
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   187
                        description: ('Class %1 uses a pool named %2 but it is not actually a shared pool.' bindWith: eachClass with: pool)
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   188
                        severity: #error data: eachClass.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   189
                    missingPools add:eachPoolName.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   190
                ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   191
            ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   192
        ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   193
    ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   194
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   195
    classesInImage ~= classesInDescription ifTrue:[
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   196
        onlyInImage := (classesInImage reject:[:cls | classesInDescription includes:cls]).
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   197
        onlyInImage do:[:cls|
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   198
            self problem: ('Class %1 not listed in project definition' bindWith: cls)
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   199
                 description: 'The class %1 not listed in project definition''s #classNamesAndAttributes, therefore it won''t be compiler nor autoladed next time you compile/load project.'
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   200
                 severity: #error data: cls.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   201
        ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   202
        onlyInDescription := (classesInDescription reject:[:cls | classesInImage includes:cls]).
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   203
        onlyInDescription do:[:cls|
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   204
            self problem: ('Class %1 is listed in project definition but not present in the system' bindWith: cls)
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   205
                 description: 'The class %1 list in project definition''s but not present in the system. This leads to uncompilable package as build files may be incorrectly generated.'
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   206
                 severity: #error data: cls.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   207
        ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   208
    ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   209
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   210
    "Created: / 11-01-2012 / 17:14:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2718
vrany
parents: 2716
diff changeset
   211
!
vrany
parents: 2716
diff changeset
   212
3020
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   213
checkClassesListedInProjectDefinition: classesToCheck
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   214
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   215
    | classNamesListed |
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   216
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   217
    classNamesListed := packageDef classNames.
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   218
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   219
    classesToCheck do:[:class|
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   220
        (class isPrivate not and:[(classNamesListed includes: class name) not]) ifTrue:[
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   221
            self problem: ('Class %1 not listed in project definition' bindWith: class)
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   222
                 description: 'The class %1 not listed in project definition''s #classNamesAndAttributes, therefore it won''t be compiler nor autoladed next time you compile/load project.'
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   223
                 severity: #error data: class.
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   224
        ]
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   225
    ].
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   226
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   227
    "Created: / 13-02-2012 / 18:18:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   228
!
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   229
2718
vrany
parents: 2716
diff changeset
   230
checkExtensionsListConsistency
vrany
parents: 2716
diff changeset
   231
    "Checks whether all extensions listed in #extensionMethodNames are present
vrany
parents: 2716
diff changeset
   232
    and if all extension methods are listed"
vrany
parents: 2716
diff changeset
   233
vrany
parents: 2716
diff changeset
   234
    | extensionsListed extensionsPresent |
vrany
parents: 2716
diff changeset
   235
vrany
parents: 2716
diff changeset
   236
    extensionsListed := OrderedCollection new.
vrany
parents: 2716
diff changeset
   237
    packageDef extensionMethodNames pairWiseDo:[:cls :sel|
vrany
parents: 2716
diff changeset
   238
        extensionsListed add: (Array with: cls with: sel)
vrany
parents: 2716
diff changeset
   239
    ].
vrany
parents: 2716
diff changeset
   240
    extensionsPresent := OrderedCollection new.
vrany
parents: 2716
diff changeset
   241
    packageDef searchForExtensions do:[:each|
vrany
parents: 2716
diff changeset
   242
        extensionsPresent add: (Array with: each mclass name with: each selector)
vrany
parents: 2716
diff changeset
   243
    ].
vrany
parents: 2716
diff changeset
   244
vrany
parents: 2716
diff changeset
   245
    (extensionsListed \ extensionsPresent) do:[:clsAndSel|
vrany
parents: 2716
diff changeset
   246
        self problem: ('Missing  %1>>%2 extension method' bindWith: clsAndSel first with: clsAndSel second)
vrany
parents: 2716
diff changeset
   247
             description: ('An extension method %1>>%2 is listed in #extensionMethodNames but not present in image' bindWith: clsAndSel first with: clsAndSel second)
vrany
parents: 2716
diff changeset
   248
             severity: #warning data: clsAndSel.
vrany
parents: 2716
diff changeset
   249
    ].
vrany
parents: 2716
diff changeset
   250
vrany
parents: 2716
diff changeset
   251
    (extensionsPresent \ extensionsListed) do:[:clsAndSel|
vrany
parents: 2716
diff changeset
   252
        self problem: ('%1>>%2 extension method not in list' bindWith: clsAndSel first with: clsAndSel second)
vrany
parents: 2716
diff changeset
   253
             description: ('An extension method %1>>%2 present in image but not listed in  #extensionMethodNames' bindWith: clsAndSel first with: clsAndSel second)
vrany
parents: 2716
diff changeset
   254
             severity: #warning data: clsAndSel.
vrany
parents: 2716
diff changeset
   255
    ].
vrany
parents: 2716
diff changeset
   256
vrany
parents: 2716
diff changeset
   257
    "Created: / 12-01-2012 / 12:31:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
vrany
parents: 2716
diff changeset
   258
!
vrany
parents: 2716
diff changeset
   259
vrany
parents: 2716
diff changeset
   260
checkExtensionsPrerequisites
vrany
parents: 2716
diff changeset
   261
    "Checks whether packages of all extensions method classes are listed
vrany
parents: 2716
diff changeset
   262
     in package prerequisites"
vrany
parents: 2716
diff changeset
   263
vrany
parents: 2716
diff changeset
   264
    packageDef searchForExtensions do:[:mthd|
vrany
parents: 2716
diff changeset
   265
        (packageDef preRequisites includes: mthd mclass package) ifFalse:[
vrany
parents: 2716
diff changeset
   266
            self problem: ('%3 required by extension method but not in prerequisites' bindWith: mthd mclass package)
vrany
parents: 2716
diff changeset
   267
                 description: ('An extension method %1>>%2 extends class in package %3 but the package is not listed in package''s prerequisited. This leads into missing methods and strange bugs when application is compiled and run!!' bindWith: mthd class with: mthd selector with: mthd class package)
vrany
parents: 2716
diff changeset
   268
                 severity: #error data: mthd
vrany
parents: 2716
diff changeset
   269
         ].
vrany
parents: 2716
diff changeset
   270
    ]
vrany
parents: 2716
diff changeset
   271
vrany
parents: 2716
diff changeset
   272
    "Created: / 12-01-2012 / 12:41:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3020
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   273
!
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   274
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   275
checkForMethodsInNoProject: classesToCheck
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   276
    | checker |
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   277
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   278
    checker := [:cls|
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   279
        cls selectorsAndMethodsDo:[:sel :mth|
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   280
            (mth package isNil or:[mth package == PackageId noProjectID]) ifTrue:[
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   281
                self problem: ('Unpackaged method %1 >> %2'  bindWith: mth mclass with: sel)
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   282
                     description: 'The class belongs to ''no package'' and therefore won'' be commited. All methods should belong to a package.'
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   283
                     severity: #error data: mth.
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   284
            ]
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   285
        ]
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   286
    ].
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   287
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   288
    classesToCheck do:[:class|
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   289
        checker value: class theMetaclass.
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   290
        checker value: class theNonMetaclass.
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   291
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   292
    ]
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   293
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   294
    "Created: / 13-02-2012 / 18:18:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   295
! !
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   296
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   297
!ProjectChecker methodsFor:'checks-private'!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   298
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   299
checkClasses
3020
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   300
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   301
    classes notNil ifTrue:[
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   302
        self checkClasses: classes
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   303
    ] ifFalse:[
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   304
        self checkClasses: (Smalltalk allClasses select:[:cls | (cls package = self package)]).
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   305
    ].
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   306
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   307
    "Created: / 11-01-2012 / 16:55:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   308
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   309
3020
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   310
checkClasses: classesToCheck
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   311
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   312
    self checkClassesListedInProjectDefinition: classesToCheck.
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   313
    self checkForMethodsInNoProject: classesToCheck.
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   314
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   315
    "Created: / 13-02-2012 / 18:18:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   316
!
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   317
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   318
checkMethods
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   319
    "Not yet implemented"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   320
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   321
    "Created: / 11-01-2012 / 16:55:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   322
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   323
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   324
checkPackage
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   325
2716
9a74597bcd4b Do not use annotations as stc crashes when compiling them
vrany
parents: 2707
diff changeset
   326
    self checkClassListConsistency.
2718
vrany
parents: 2716
diff changeset
   327
    self checkExtensionsListConsistency.
vrany
parents: 2716
diff changeset
   328
    self checkExtensionsPrerequisites.
vrany
parents: 2716
diff changeset
   329
2716
9a74597bcd4b Do not use annotations as stc crashes when compiling them
vrany
parents: 2707
diff changeset
   330
    "add more here..."
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   331
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   332
    "Created: / 11-01-2012 / 16:55:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   333
! !
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   334
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   335
!ProjectChecker methodsFor:'reporting'!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   336
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   337
problem: label description: description severity: severity
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   338
    "Reports a problem"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   339
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   340
    ^self problem: label description: description severity: severity data: nil
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   341
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   342
    "Created: / 11-01-2012 / 17:24:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   343
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   344
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   345
problem: label description: description severity: severity data: data
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   346
    "Reports a problem"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   347
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   348
    problems isNil ifTrue:[problems := OrderedCollection new].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   349
    problems add:
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   350
        (Problem new
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   351
            label: label;
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   352
            description: description;
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   353
            severity: severity;
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   354
            data: data)
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   355
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   356
    "Created: / 11-01-2012 / 17:17:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   357
! !
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   358
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   359
!ProjectChecker::Problem methodsFor:'accessing'!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   360
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   361
data
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   362
    ^ data
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   363
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   364
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   365
data:something
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   366
    data := something.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   367
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   368
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   369
description
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   370
    ^ description
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   371
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   372
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   373
description:something
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   374
    description := something.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   375
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   376
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   377
label
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   378
    ^ label
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   379
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   380
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   381
label:something
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   382
    label := something.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   383
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   384
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   385
severity
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   386
    ^ severity
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   387
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   388
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   389
severity:something
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   390
    severity := something.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   391
! !
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   392
2718
vrany
parents: 2716
diff changeset
   393
!ProjectChecker::Problem methodsFor:'printing & storing'!
vrany
parents: 2716
diff changeset
   394
vrany
parents: 2716
diff changeset
   395
printOn:aStream
vrany
parents: 2716
diff changeset
   396
    "append a printed representation if the receiver to the argument, aStream"
vrany
parents: 2716
diff changeset
   397
vrany
parents: 2716
diff changeset
   398
    super printOn:aStream.
vrany
parents: 2716
diff changeset
   399
    aStream nextPut:$(.
vrany
parents: 2716
diff changeset
   400
    severity printOn:aStream.
vrany
parents: 2716
diff changeset
   401
    aStream nextPut:$:; space.
vrany
parents: 2716
diff changeset
   402
    label printOn:aStream.
vrany
parents: 2716
diff changeset
   403
    aStream nextPut:$).
vrany
parents: 2716
diff changeset
   404
vrany
parents: 2716
diff changeset
   405
    "Modified: / 12-01-2012 / 13:09:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
vrany
parents: 2716
diff changeset
   406
! !
vrany
parents: 2716
diff changeset
   407
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   408
!ProjectChecker class methodsFor:'documentation'!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   409
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   410
version
3020
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   411
    ^ '$Id: ProjectChecker.st 1883 2012-02-13 18:51:07Z vranyj1 $'
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   412
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   413
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   414
version_CVS
3011
1997ff6e7e55 trunk branched into /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2718
diff changeset
   415
    ^ '§Header: /cvs/stx/stx/libbasic3/ProjectChecker.st,v 1.3 2012/01/12 13:12:35 vrany Exp §'
3012
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
   416
!
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
   417
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
   418
version_SVN
3020
240c299584af Improvements in project checker
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3019
diff changeset
   419
    ^ '$Id: ProjectChecker.st 1883 2012-02-13 18:51:07Z vranyj1 $'
3012
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
   420
! !