ProjectChecker.st
author Claus Gittinger <cg@exept.de>
Sat, 05 Oct 2019 11:20:18 +0200
changeset 4509 a58d825e6d75
parent 4501 7d09ad7e22b3
child 4546 88e32ac10e79
permissions -rw-r--r--
#REFACTORING by exept class: CVSSourceCodeManager class changed: #executeCVSCommand:module:inDirectory:log:pipe:orElseOutputTo:errorTo:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4315
0d6042c723e7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4217
diff changeset
     1
"{ Encoding: utf8 }"
0d6042c723e7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4217
diff changeset
     2
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
     3
"
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
     4
 COPYRIGHT (c) 2006 by eXept Software AG
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
     5
              All Rights Reserved
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
     6
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
     7
 This software is furnished under a license and may be used
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
     8
 only in accordance with the terms of that license and with the
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    10
 be provided or otherwise made available to, or used by, any
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    11
 other person.  No title to or ownership of the software is
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    12
 hereby transferred.
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    13
"
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    14
"{ Package: 'stx:libbasic3' }"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    15
3780
d9c489fb2a98 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3686
diff changeset
    16
"{ NameSpace: Smalltalk }"
d9c489fb2a98 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3686
diff changeset
    17
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    18
Object subclass:#ProjectChecker
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
    19
	instanceVariableNames:'packages currentPackage currentPackageDef classes methods
4455
af2a675e0f32 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 4372
diff changeset
    20
		problems phase checkExtensionsOnly skipCheckClasses rulesApplied'
2967
c5f1d6853ad1 changed: #checkClassListConsistency (class order)
vrany
parents: 2966
diff changeset
    21
	classVariableNames:''
c5f1d6853ad1 changed: #checkClassListConsistency (class order)
vrany
parents: 2966
diff changeset
    22
	poolDictionaries:''
c5f1d6853ad1 changed: #checkClassListConsistency (class order)
vrany
parents: 2966
diff changeset
    23
	category:'System-Support-Projects'
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    24
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    25
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    26
!ProjectChecker class methodsFor:'documentation'!
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    27
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    28
copyright
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    29
"
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    30
 COPYRIGHT (c) 2006 by eXept Software AG
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    31
              All Rights Reserved
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    32
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    33
 This software is furnished under a license and may be used
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    34
 only in accordance with the terms of that license and with the
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    35
 inclusion of the above copyright notice.   This software may not
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    36
 be provided or otherwise made available to, or used by, any
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    37
 other person.  No title to or ownership of the software is
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    38
 hereby transferred.
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    39
"
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    40
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    41
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    42
documentation
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    43
"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    44
    A simple project checker that can search whole projects or individual
3791
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
    45
    classes or methods for various problems that may cause build problems,
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
    46
    such as:
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
    47
        - inconsistent/messed up project definition class
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
    48
        - method code problems
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    49
3791
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
    50
    NOTE: this is not a lint. It only checks for inconsitent configuration
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
    51
    (projectDefinition class data vs. real data) and compilability (stc limitations).
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
    52
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    53
    NOTE: Not yet finished. This code is meant as a single central entry for all the
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    54
    source code management tools like SCM Utilities, NewSystemBrowser ets. That code
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    55
    will be refactored later once this tool prooves itself useful and mature enough.
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    56
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    57
    [author:]
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    58
        Jan Vrany <jan.vrany@fit.cvut.cz>
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    59
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    60
    [instance variables:]
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    61
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    62
    [class variables:]
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    63
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    64
    [see also:]
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
    65
        Tools::ProjectCheckerBrowser
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    66
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    67
"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    68
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    69
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    70
examples
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    71
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    72
    "
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    73
        ProjectChecker check: 'stx:libbasic'
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    74
        ProjectChecker check: 'stx:libtool'
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
    75
        ProjectChecker check: 'stx:libbasic3'
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    76
    "
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    77
! !
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    78
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
    79
!ProjectChecker class methodsFor:'instance creation'!
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
    80
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
    81
forPackage: packageId
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
    82
    ^self new
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
    83
        package: packageId;
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
    84
        yourself.
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
    85
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
    86
    "Created: / 25-07-2012 / 18:00:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2910
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
    87
!
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
    88
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
    89
new
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
    90
    "return an initialized instance"
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
    91
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
    92
    ^ self basicNew initialize.
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
    93
! !
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
    94
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    95
!ProjectChecker class methodsFor:'checking'!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    96
4360
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
    97
check:aPackageSymbolOrClass
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
    98
    ^ self new check:aPackageSymbolOrClass
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
    99
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   100
    "Created: / 11-01-2012 / 16:46:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   101
! !
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   102
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   103
!ProjectChecker methodsFor:'accessing'!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   104
3148
2a6c8e1b5f69 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3116
diff changeset
   105
checkExtensionsOnly:aBoolean
2a6c8e1b5f69 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3116
diff changeset
   106
    checkExtensionsOnly := aBoolean.
2a6c8e1b5f69 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3116
diff changeset
   107
!
2a6c8e1b5f69 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3116
diff changeset
   108
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   109
classes: aCollection
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   110
    classes := aCollection.
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   111
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   112
    "Created: / 13-02-2012 / 17:06:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   113
!
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   114
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   115
methods
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   116
    ^ methods
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   117
!
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   118
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   119
methods:something
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   120
    methods := something.
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   121
!
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   122
4372
d54a65e0fd4e #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4371
diff changeset
   123
package:packageOrPackageId
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   124
    "Adds `packageId` to set of checked packages"
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   125
4372
d54a65e0fd4e #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4371
diff changeset
   126
    |packageId|
d54a65e0fd4e #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4371
diff changeset
   127
d54a65e0fd4e #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4371
diff changeset
   128
    packageOrPackageId isBehavior ifTrue:[
d54a65e0fd4e #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4371
diff changeset
   129
        packageId := packageOrPackageId package.
d54a65e0fd4e #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4371
diff changeset
   130
    ] ifFalse:[    
d54a65e0fd4e #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4371
diff changeset
   131
        packageId := packageOrPackageId.
d54a65e0fd4e #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4371
diff changeset
   132
    ].
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   133
    (packages includes: packageId) ifFalse:[ 
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   134
        packages add: packageId 
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   135
    ].
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   136
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   137
    "Modified (comment): / 22-02-2014 / 22:03:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   138
!
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   139
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   140
problems
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   141
    ^ problems
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   142
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   143
    "Modified: / 23-02-2012 / 15:14:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4455
af2a675e0f32 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 4372
diff changeset
   144
!
af2a675e0f32 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 4372
diff changeset
   145
af2a675e0f32 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 4372
diff changeset
   146
skipCheckClasses:aBoolean
af2a675e0f32 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 4372
diff changeset
   147
    skipCheckClasses := aBoolean.
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   148
! !
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   149
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   150
!ProjectChecker methodsFor:'checking'!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   151
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   152
check
2910
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   153
    problems removeAll.
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   154
    packages do:[:each |
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   155
        currentPackage := each.
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   156
        currentPackageDef := ProjectDefinition definitionClassForPackage: currentPackage.
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   157
        currentPackageDef isNil ifTrue:[
3807
9746e6873402 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3805
diff changeset
   158
            self addProblem: (ProjectProblem newProjectDefinitionDoesNotExist package: currentPackage).
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   159
            ^self    
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   160
        ].
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   161
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   162
        ActivityNotification raiseRequestWith:self errorString:'Checking package...'.
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   163
        self checkPackage.
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   164
        (checkExtensionsOnly ? false) ifFalse:[
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   165
            ActivityNotification raiseRequestWith:self errorString:'Checking classes...'.
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   166
            self checkClasses.
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   167
        ].
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   168
        ActivityNotification raiseRequestWith:self errorString:'Checking methods...'.
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   169
        self checkMethods.
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   170
    ].
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   171
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   172
    "Created: / 11-01-2012 / 16:47:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   173
    "Modified: / 22-02-2014 / 21:59:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   174
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   175
4360
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
   176
check:packageSymbolOrClass
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
   177
    packageSymbolOrClass isBehavior ifTrue:[
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
   178
        self package:packageSymbolOrClass package.
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
   179
        self checkMethods:packageSymbolOrClass theNonMetaclass methodDictionary values, packageSymbolOrClass theMetaclass methodDictionary values
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
   180
    ] ifFalse:[
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
   181
        self package:packageSymbolOrClass.
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
   182
        self check.
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
   183
    ].
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   184
4360
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
   185
    "
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
   186
        ProjectChecker new check:'stx:libbasic3'
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
   187
        ProjectChecker new check:self
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
   188
    "
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
   189
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   190
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   191
    "Created: / 11-01-2012 / 16:47:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   192
! !
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   193
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   194
!ProjectChecker methodsFor:'checks-individual'!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   195
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   196
checkClassListConsistency
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   197
    "Checks whether all classes listed in #classNamesAndAttributes are present
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   198
    and if all present classes are listed"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   199
3807
9746e6873402 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3805
diff changeset
   200
    |classesInImage classesInDescription classesInDescriptionChecked onlyInDescription onlyInImage|
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   201
    "WARNING: Copy/paste of ProjectDefinition>>validateDescription"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   202
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   203
    classesInImage := Smalltalk allClasses select:[:cls | (cls package = currentPackage) and:[cls isPrivate not]].
3807
9746e6873402 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3805
diff changeset
   204
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   205
    "/ classesInDescription := self classes asIdentitySet.
2910
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   206
    classesInDescription := OrderedCollection new.
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   207
    ( (currentPackageDef compiled_classNames_common)
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   208
    , (currentPackageDef compiled_classNamesForPlatform:(OperatingSystem platformName))
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   209
    , (currentPackageDef autoloaded_classNames)) do:[:nm |
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   210
        |cls|
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   211
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   212
        cls := Smalltalk at:nm asSymbol.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   213
        cls isNil ifTrue:[
3807
9746e6873402 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3805
diff changeset
   214
            self addProblem: (ProjectProblem newClassListedButDoesNotExist className: nm)
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   215
        ] ifFalse:[
3807
9746e6873402 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3805
diff changeset
   216
            cls package ~= currentPackage ifTrue:[
9746e6873402 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3805
diff changeset
   217
                self addProblem: (ProjectProblem newClassListedButInOtherPackage className: nm)
9746e6873402 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3805
diff changeset
   218
            ] ifFalse:[
9746e6873402 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3805
diff changeset
   219
                classesInDescription add:cls.
9746e6873402 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3805
diff changeset
   220
            ]
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   221
        ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   222
    ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   223
3807
9746e6873402 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3805
diff changeset
   224
    classesInDescriptionChecked := Set new.
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   225
    classesInDescription do:[:eachClass |
4371
a5d2ba58a4af #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4360
diff changeset
   226
        |classesSuperclass|
a5d2ba58a4af #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4360
diff changeset
   227
a5d2ba58a4af #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4360
diff changeset
   228
        classesSuperclass := eachClass superclass.
a5d2ba58a4af #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4360
diff changeset
   229
2910
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   230
        (classesInDescriptionChecked includes: eachClass) ifTrue:[
4371
a5d2ba58a4af #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4360
diff changeset
   231
            self addProblem: (ProjectProblem newClassListedMultipleTimes:eachClass)
2910
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   232
        ].
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   233
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   234
        eachClass sharedPoolNames do:[:eachPoolName |
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   235
            |pool|
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   236
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   237
            pool := eachClass nameSpace classNamed:eachPoolName.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   238
            pool isNil ifTrue:[
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   239
                eachClass nameSpace ~~ Smalltalk ifTrue:[
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   240
                    pool := Smalltalk classNamed:eachPoolName.
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   241
                ]
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   242
            ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   243
            pool isNil ifTrue:[
4371
a5d2ba58a4af #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4360
diff changeset
   244
                self addProblem:(ProjectProblem newClass:eachClass usesPoolButItDoesNotExist:eachPoolName).
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   245
            ] ifFalse:[
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   246
                pool isSharedPool ifFalse:[
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   247
                    self addProblem: 
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   248
                        (ProjectProblem newClassUsesPoolButItIsNotASharedPool
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   249
                            className: eachClass name;
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   250
                            poolName: eachPoolName).                
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   251
                ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   252
            ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   253
        ].
2910
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   254
4371
a5d2ba58a4af #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4360
diff changeset
   255
        (classesSuperclass notNil "/Care about classes with nil superclass - Object & Autoload
a5d2ba58a4af #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4360
diff changeset
   256
          and:[classesSuperclass package == eachClass package]
4217
4ccbde8e7a66 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4189
diff changeset
   257
        ) ifTrue:[
4371
a5d2ba58a4af #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4360
diff changeset
   258
            (classesInDescriptionChecked includes: classesSuperclass) ifFalse:[
4217
4ccbde8e7a66 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4189
diff changeset
   259
                ((currentPackageDef autoloaded_classNames) includes:eachClass name) ifFalse:[
4371
a5d2ba58a4af #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4360
diff changeset
   260
                    self addProblem:(ProjectProblem newClassListedBeforeItsSuperclass:eachClass)
4217
4ccbde8e7a66 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4189
diff changeset
   261
                ].
2910
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   262
            ].
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   263
        ].
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   264
        eachClass sharedPools do:[:eachPool|
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   265
            eachPool package == eachClass package ifTrue:[
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   266
                (classesInDescriptionChecked includes: eachPool) ifFalse:[
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   267
                    self addProblem:
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   268
                        (ProjectProblem newClassListedBeforeItsPool
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   269
                            className: eachClass name;
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   270
                            poolName: eachPool name)
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   271
                ].
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   272
            ].
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   273
        ].
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   274
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   275
        classesInDescriptionChecked add: eachClass.
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   276
    ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   277
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   278
    classesInImage ~= classesInDescription ifTrue:[
2856
a1cee28488c0 changed: #checkClassListConsistency - do not warn about not-listed classes twice
vrany
parents: 2853
diff changeset
   279
        "This is done later in checkClassesListedInProjectDefinition:"
a1cee28488c0 changed: #checkClassListConsistency - do not warn about not-listed classes twice
vrany
parents: 2853
diff changeset
   280
"/        onlyInImage := (classesInImage reject:[:cls | classesInDescription includes:cls]).
a1cee28488c0 changed: #checkClassListConsistency - do not warn about not-listed classes twice
vrany
parents: 2853
diff changeset
   281
"/        onlyInImage do:[:cls|
a1cee28488c0 changed: #checkClassListConsistency - do not warn about not-listed classes twice
vrany
parents: 2853
diff changeset
   282
"/            self addProblem: 
3807
9746e6873402 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3805
diff changeset
   283
"/                (ProjectProblem newClassListedButInOtherPackage className: cls name).
2856
a1cee28488c0 changed: #checkClassListConsistency - do not warn about not-listed classes twice
vrany
parents: 2853
diff changeset
   284
"/        ].
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   285
        onlyInDescription := (classesInDescription reject:[:cls | classesInImage includes:cls]).
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   286
        onlyInDescription do:[:cls|
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   287
            self addProblem: 
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   288
                (ProjectProblem newClassListedButDoesNotExist className: cls name)
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   289
        ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   290
    ].
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   291
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   292
    "Created: / 11-01-2012 / 17:14:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   293
    "Modified: / 22-02-2014 / 21:46:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4217
4ccbde8e7a66 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4189
diff changeset
   294
    "Modified: / 21-02-2017 / 16:17:46 / cg"
2718
vrany
parents: 2716
diff changeset
   295
!
vrany
parents: 2716
diff changeset
   296
3467
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   297
checkClassesAutoloadedSuperclasse: aCollection"of Class"
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   298
    currentPackageDef classNamesAndAttributesDo:[:clsnm :attributes|
3780
d9c489fb2a98 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3686
diff changeset
   299
        | cls superclass |
3467
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   300
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   301
        cls := Smalltalk at: clsnm.
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   302
        (aCollection includes: cls) ifTrue:[
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   303
            (attributes includes: #autoload) ifFalse:[
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   304
                "/ Care for Object!!
3780
d9c489fb2a98 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3686
diff changeset
   305
                superclass := cls superclass.
d9c489fb2a98 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3686
diff changeset
   306
                superclass notNil ifTrue:[
d9c489fb2a98 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3686
diff changeset
   307
                    | superDef |
3467
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   308
3780
d9c489fb2a98 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3686
diff changeset
   309
                    superDef := ProjectDefinition definitionClassForPackage: superclass package.
3467
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   310
                    superDef isNil ifTrue:[
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   311
                        problems add:
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   312
                            (ProjectProblem newClassIsCompiledButSuperclassProjectDefinitionIsMissing
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   313
                                            package: currentPackage;
3467
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   314
                                            className: clsnm;
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   315
                                            yourself)   
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   316
                    ] ifFalse:[
3780
d9c489fb2a98 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3686
diff changeset
   317
                        (superDef isAutoloaded:superclass) ifTrue:[
d9c489fb2a98 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3686
diff changeset
   318
                            problems add:
d9c489fb2a98 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3686
diff changeset
   319
                                (ProjectProblem newClassIsCompiledButSuperclassIsAutoloaded
d9c489fb2a98 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3686
diff changeset
   320
                                    package: currentPackage;
d9c489fb2a98 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3686
diff changeset
   321
                                    className: clsnm;
d9c489fb2a98 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3686
diff changeset
   322
                                    yourself)
3467
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   323
                        ].
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   324
                    ]
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   325
                ].
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   326
            ].
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   327
        ].
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   328
    ].
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   329
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   330
    "Created: / 20-09-2013 / 11:08:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   331
    "Modified: / 05-10-2013 / 12:45:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   332
!
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   333
2910
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   334
checkClassesForMethodsInNoProject:classesToCheck 
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   335
    | checker |
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   336
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   337
    checker := [:cls | 
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   338
        cls 
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   339
            selectorsAndMethodsDo:[:sel :mth | 
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   340
                (mth package isNil or:[ mth package == PackageId noProjectID ]) ifTrue:[
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   341
                    "Sigh, special hack for Expecco"
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   342
                    ((cls name = 'Expecco::AbstractApplication class' and:[ sel = 'flags' ]) or:[
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   343
                     (cls name = 'Expecco::Browser class' and:[ sel = 'flags' ])]) ifFalse:[
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   344
                        self addProblem:(ProjectProblem newMethodInNoPackage className:cls name
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   345
                                    selector:sel).
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   346
                    ]
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   347
                ]
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   348
            ]
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   349
    ].
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   350
    classesToCheck do:[:class | 
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   351
        checker value:class theMetaclass.
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   352
        checker value:class theNonMetaclass.
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   353
    ]
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   354
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   355
    "Created: / 13-02-2012 / 18:18:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   356
!
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   357
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   358
checkClassesForNonQualifiedSharedPools: classesToCheck 
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   359
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   360
    classesToCheck do:[:cls|
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   361
        cls sharedPoolNames do:[:poolName|
4315
0d6042c723e7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4217
diff changeset
   362
            |pool|
2910
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   363
4315
0d6042c723e7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4217
diff changeset
   364
            pool := cls sharedPoolNamed:poolName.
0d6042c723e7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4217
diff changeset
   365
            (pool notNil and:[pool isSharedPool]) ifFalse:[
0d6042c723e7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4217
diff changeset
   366
                self addProblem:
0d6042c723e7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4217
diff changeset
   367
                    (ProjectProblem newClassUsesPoolButItIsNotASharedPool
0d6042c723e7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4217
diff changeset
   368
                            className:(cls name);
0d6042c723e7 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4217
diff changeset
   369
                            poolName: poolName)
2910
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   370
            ]
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   371
        ]
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   372
    ].
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   373
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   374
    "Created: / 13-09-2012 / 16:34:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   375
!
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   376
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   377
checkClassesListedInProjectDefinition: classesToCheck
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   378
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   379
    | classNamesListed |
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   380
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   381
    classNamesListed := currentPackageDef classNames.
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   382
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   383
    classesToCheck do:[:class|
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   384
        (class isPrivate not and:[(classNamesListed includes: class name) not]) ifTrue:[
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   385
            self addProblem: 
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   386
                (ProjectProblem newClassNotListed className: class name).
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   387
        ]
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   388
    ].
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   389
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   390
    "Created: / 13-02-2012 / 18:18:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   391
!
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   392
2718
vrany
parents: 2716
diff changeset
   393
checkExtensionsListConsistency
vrany
parents: 2716
diff changeset
   394
    "Checks whether all extensions listed in #extensionMethodNames are present
3791
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   395
     and if all extension methods are listed.
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   396
     Also check if any regular or extension method is also listed in some other package
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   397
     (which may happen after a move, if the original package was not updated)"
2718
vrany
parents: 2716
diff changeset
   398
3791
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   399
    | extensionsListed extensionsPresent allOtherExtensions checkMethod|
2718
vrany
parents: 2716
diff changeset
   400
vrany
parents: 2716
diff changeset
   401
    extensionsListed := OrderedCollection new.
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   402
    currentPackageDef extensionMethodNames pairWiseDo:[:cls :sel|
2718
vrany
parents: 2716
diff changeset
   403
        extensionsListed add: (Array with: cls with: sel)
vrany
parents: 2716
diff changeset
   404
    ].
vrany
parents: 2716
diff changeset
   405
    extensionsPresent := OrderedCollection new.
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   406
    currentPackageDef searchForExtensions do:[:each|
2910
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   407
        "JV@2012-09-07: Do not take Java methods into an account, they
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   408
         should not be listed in extensionMethodNames.
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   409
         They are loaded lazily by JavaClassReader and if listed here,
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   410
         they would cause an error if the package is loaded from source.
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   411
         Sort of a HACK, indeed"
3467
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   412
        each mclass theNonMetaclass isJavaClass ifFalse:[
2910
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   413
            extensionsPresent add: (Array with: each mclass name with: each selector)
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   414
        ].
2718
vrany
parents: 2716
diff changeset
   415
    ].
vrany
parents: 2716
diff changeset
   416
vrany
parents: 2716
diff changeset
   417
    (extensionsListed \ extensionsPresent) do:[:clsAndSel|
3167
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   418
        |cls clsName selector|
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   419
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   420
        clsName := clsAndSel first.
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   421
        selector := clsAndSel second.
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   422
        (cls := Smalltalk classNamed: clsName) isNil ifTrue:[
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   423
            self addProblem: 
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   424
                (ProjectProblem newExtensionMethodsClassDoesNotExist
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   425
                    className: clsName selector: selector).                            
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   426
        ] ifFalse:[
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   427
            (cls compiledMethodAt:selector) isNil ifTrue:[
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   428
                self addProblem: 
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   429
                    (ProjectProblem newExtensionMethodListedButDoesNotExist
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   430
                        className: clsName selector: selector). 
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   431
            ] ifFalse:[
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   432
                self addProblem: 
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   433
                    (ProjectProblem newExtensionMethodListedButInDifferentPackage
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   434
                        className: clsName selector: selector). 
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   435
            ]
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   436
        ]
2718
vrany
parents: 2716
diff changeset
   437
    ].
vrany
parents: 2716
diff changeset
   438
vrany
parents: 2716
diff changeset
   439
    (extensionsPresent \ extensionsListed) do:[:clsAndSel|
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   440
         self addProblem: 
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   441
            (ProjectProblem newExtensionMethodNotListed
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   442
                className: clsAndSel first selector: clsAndSel second).                            
2718
vrany
parents: 2716
diff changeset
   443
    ].
vrany
parents: 2716
diff changeset
   444
3791
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   445
    allOtherExtensions := Set new.
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   446
    ProjectDefinition allSubclassesDo:[:eachOther |
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   447
        eachOther ~~ currentPackageDef ifTrue:[
3805
f279311c75a6 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3804
diff changeset
   448
            Error handle:[:ex |
f279311c75a6 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3804
diff changeset
   449
                Transcript showCR:('ProjetChecker [warning]: ignored error while asking ',eachOther name,' for extensionMethods').
f279311c75a6 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3804
diff changeset
   450
                ex return
f279311c75a6 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3804
diff changeset
   451
            ] do:[
f279311c75a6 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3804
diff changeset
   452
                allOtherExtensions addAll:(eachOther extensionMethods).
f279311c75a6 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3804
diff changeset
   453
            ].
3791
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   454
        ].
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   455
    ].
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   456
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   457
    checkMethod :=
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   458
        [:eachMethodHere |
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   459
            (allOtherExtensions includes:eachMethodHere) ifTrue:[
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   460
                |otherProjectDefinitions|
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   461
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   462
                otherProjectDefinitions := OrderedCollection new.
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   463
                "/ where is it?
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   464
                ProjectDefinition allSubclassesDo:[:someOtherPackage |
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   465
                    someOtherPackage ~~ currentPackageDef ifTrue:[
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   466
                        (someOtherPackage extensionMethods includes:eachMethodHere) ifTrue:[
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   467
                            otherProjectDefinitions add:someOtherPackage
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   468
                        ]
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   469
                    ]
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   470
                ].
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   471
                otherProjectDefinitions notEmptyOrNil ifTrue:[
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   472
                    otherProjectDefinitions sortBySelector:#package.
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   473
                    self addProblem: 
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   474
                       (ProjectProblem newMethodListedInOtherPackage
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   475
                           className: (eachMethodHere mclass name) selector: (eachMethodHere selector);
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   476
                           otherProjectDefinitionClasses:otherProjectDefinitions;
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   477
                           yourself).                            
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   478
                ].
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   479
            ].
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   480
        ].
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   481
3795
fb9b9489df78 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3791
diff changeset
   482
    currentPackageDef compiled_classesForPlatform do:[:eachClass |
3791
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   483
        eachClass instAndClassMethodsDo:[:m |
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   484
            (m package = currentPackage) ifTrue:[ checkMethod value:m].
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   485
        ].
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   486
    ].
edc9f920cfb1 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3780
diff changeset
   487
    currentPackageDef extensions do:checkMethod.
2718
vrany
parents: 2716
diff changeset
   488
!
vrany
parents: 2716
diff changeset
   489
vrany
parents: 2716
diff changeset
   490
checkExtensionsPrerequisites
vrany
parents: 2716
diff changeset
   491
    "Checks whether packages of all extensions method classes are listed
vrany
parents: 2716
diff changeset
   492
     in package prerequisites"
vrany
parents: 2716
diff changeset
   493
3116
9ddba2316fec class: ProjectChecker
Stefan Vogel <sv@exept.de>
parents: 2976
diff changeset
   494
    |preRequisites|
9ddba2316fec class: ProjectChecker
Stefan Vogel <sv@exept.de>
parents: 2976
diff changeset
   495
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   496
    preRequisites := currentPackageDef effectivePreRequisites.
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   497
    currentPackageDef searchForExtensions do:[:mthd|
3116
9ddba2316fec class: ProjectChecker
Stefan Vogel <sv@exept.de>
parents: 2976
diff changeset
   498
        (preRequisites includes: mthd mclass package) ifFalse:[
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   499
"/            self problem: ('%3 required by extension method but not in prerequisites' bindWith: mthd mclass package)
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   500
"/                 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)
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   501
"/                 severity: #error data: mthd
2718
vrany
parents: 2716
diff changeset
   502
         ].
vrany
parents: 2716
diff changeset
   503
    ]
vrany
parents: 2716
diff changeset
   504
vrany
parents: 2716
diff changeset
   505
    "Created: / 12-01-2012 / 12:41:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   506
!
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   507
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   508
checkMethodCodingStyle: method
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   509
    "Checks for various coding style violations such as 'self halt' or
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   510
     improper indentation :-)"
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   511
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   512
    "To be implemented"
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   513
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   514
    "Created: / 11-04-2012 / 12:38:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   515
!
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   516
3161
3f9f36f40778 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3148
diff changeset
   517
checkMethodSTCCompilability1: method into: problemIssue
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   518
    "Checks is the method can be compiled by STC based on Parser error/warnings"
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   519
4500
6c5a62d702da #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
   520
    | lang cls |
3161
3f9f36f40778 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3148
diff changeset
   521
4357
2ff9600e08f5 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 4315
diff changeset
   522
    lang := method programmingLanguage. 
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   523
    lang isSmalltalk ifFalse:[ ^ self ].
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   524
4500
6c5a62d702da #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
   525
    method usedGlobals do:[:nm |
4357
2ff9600e08f5 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 4315
diff changeset
   526
        nm isLowercaseFirst ifTrue:[
4501
7d09ad7e22b3 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 4500
diff changeset
   527
            "/ EVEN if that refers to a project definition,
7d09ad7e22b3 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 4500
diff changeset
   528
            "/ because by default, stc does not allow lowercase globals.
7d09ad7e22b3 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 4500
diff changeset
   529
            "/ ((cls := Smalltalk classNamed:nm) notNil
7d09ad7e22b3 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 4500
diff changeset
   530
            "/   and:[cls isProjectDefinition]
7d09ad7e22b3 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 4500
diff changeset
   531
            "/ ) ifFalse:[
4500
6c5a62d702da #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
   532
                problemIssue 
6c5a62d702da #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
   533
                    addWarning:'Contains reference to lowercase global: ', nm
6c5a62d702da #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
   534
                    from:0 to:0
4501
7d09ad7e22b3 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 4500
diff changeset
   535
            "/ ].
4357
2ff9600e08f5 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 4315
diff changeset
   536
        ].
3161
3f9f36f40778 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3148
diff changeset
   537
        (nm startsWith:Smalltalk undeclaredPrefix) ifTrue:[
3f9f36f40778 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3148
diff changeset
   538
            problemIssue 
3f9f36f40778 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3148
diff changeset
   539
                addWarning:'Contains unresolved reference to: ',(nm copyFrom:(Smalltalk undeclaredPrefix size + 1))
3f9f36f40778 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3148
diff changeset
   540
                from:0 to:0
3f9f36f40778 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3148
diff changeset
   541
        ]
3f9f36f40778 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3148
diff changeset
   542
    ].
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   543
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   544
    "Created: / 11-04-2012 / 15:31:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   545
!
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   546
3161
3f9f36f40778 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3148
diff changeset
   547
checkMethodSTCCompilability2: method into: problemIssue
3563
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   548
    | env rules violations |
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   549
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   550
    "/ Check if SmallLint is available...
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   551
    (Smalltalk at:#RBCompositeLintRule) isNil ifTrue:[ ^ self ].
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   552
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   553
    env := SelectorEnvironment new.
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   554
    env addClass: method mclass selector: method selector.
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   555
3686
544231883156 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3618
diff changeset
   556
    rulesApplied isNil ifTrue:[
544231883156 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3618
diff changeset
   557
        rulesApplied := RBCompositeLintRule allRules 
3804
7accb0e1e60e class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3795
diff changeset
   558
                    selectRules:[:rule | (rule isTaggedAs: #stc) and:[ rule severity == #error ]].
3686
544231883156 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3618
diff changeset
   559
    ].
544231883156 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3618
diff changeset
   560
    rules := rulesApplied.
544231883156 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3618
diff changeset
   561
3563
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   562
    rules runOnEnvironment: env.
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   563
3804
7accb0e1e60e class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3795
diff changeset
   564
    violations := rules selectRules:[:each | each result includesSelector: method selector in: method mclass ]. 
3563
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   565
    violations flatten do:[:each | 
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   566
        problemIssue addViolation: each
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   567
    ].
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   568
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   569
    "Created: / 11-04-2012 / 15:54:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3563
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   570
    "Modified: / 29-05-2014 / 16:59:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   571
!
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   572
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   573
checkMethodSTCCompilability: method
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   574
    "Checks is the method can be compiled by STC (since STC won't compile
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   575
     everything bytecode compiler/jit compiler does, sigh"
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   576
3563
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   577
    | cls issue1 issue2 |
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   578
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   579
    "No need to check the method if the class is autoloaded"
3563
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   580
    cls := method mclass theNonMetaclass.
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   581
    cls isPrivate ifTrue:[ 
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   582
        cls := cls topOwningClass.
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   583
    ].
4360
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
   584
    (currentPackageDef notNil and:[currentPackageDef autoloaded_classNames includes: cls name]) ifTrue:[
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   585
        ^ self
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   586
    ].
3563
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   587
3570
52c403d0b881 Speed optimization: do not check method for STC compilabiliry if it was compiled by stc and hasn't been changed since then.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3563
diff changeset
   588
    "/ Speed optimization: do not check method if it was compiled by 
52c403d0b881 Speed optimization: do not check method for STC compilabiliry if it was compiled by stc and hasn't been changed since then.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3563
diff changeset
   589
    "/ stc and hasn't been changed since then.
52c403d0b881 Speed optimization: do not check method for STC compilabiliry if it was compiled by stc and hasn't been changed since then.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3563
diff changeset
   590
    method byteCode isNil ifTrue:[ ^ self ].
52c403d0b881 Speed optimization: do not check method for STC compilabiliry if it was compiled by stc and hasn't been changed since then.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3563
diff changeset
   591
3563
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   592
    issue1 := ProjectProblem newMethodCompilabilityIssue1.
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   593
    issue1 method: method.
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   594
    self checkMethodSTCCompilability1: method into: issue1.
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   595
    issue1 hasIssue ifTrue:[
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   596
        self addProblem: issue1
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   597
    ].
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   598
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   599
    issue2 := ProjectProblem newMethodCompilabilityIssue2.
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   600
    issue2 method: method.
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   601
    self checkMethodSTCCompilability2: method into: issue2.
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   602
    issue2 hasIssue ifTrue:[
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   603
        self addProblem: issue2
4357
2ff9600e08f5 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 4315
diff changeset
   604
    ].
4360
6f051df487df #QUALITY by stefan
Stefan Vogel <sv@exept.de>
parents: 4357
diff changeset
   605
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   606
    "Created: / 11-04-2012 / 12:37:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3570
52c403d0b881 Speed optimization: do not check method for STC compilabiliry if it was compiled by stc and hasn't been changed since then.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3563
diff changeset
   607
    "Modified (format): / 29-05-2014 / 16:54:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   608
!
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   609
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   610
checkMethodSourceCode: method
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   611
    "Checks, whether method's source code is both
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   612
     available and parseable. Return true if the code
2966
bf5ea36104cd Fix in #checkClassListConsistency - care about classes with nil superclass (Autoload/Object)
vrany
parents: 2965
diff changeset
   613
     is syntactically correct, false otherwise"
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   614
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   615
    | source |
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   616
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   617
    [    
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   618
        source := method source.
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   619
    ] on: Error do:[
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   620
        self addProblem:
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   621
            (ProjectProblem newMethodSourceNotAvailable method: method).
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   622
        ^false
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   623
    ].
2913
041df7e717bc changed: #checkMethodSourceCode:
vrany
parents: 2910
diff changeset
   624
    method programmingLanguage isSmalltalk ifFalse:[ ^ false ].
041df7e717bc changed: #checkMethodSourceCode:
vrany
parents: 2910
diff changeset
   625
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   626
    [
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   627
        (Parser parseMethod: method source) == #Error ifTrue:[
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   628
            self addProblem:
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   629
                (ProjectProblem newMethodSourceCorrupted method: method).
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   630
            ^false.
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   631
        ]
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   632
    ] on: Error do:[
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   633
        self addProblem:
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   634
            (ProjectProblem newMethodSourceCorrupted method: method).
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   635
        ^false.
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   636
    ].
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   637
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   638
    ^true
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   639
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   640
    "Created: / 11-04-2012 / 12:29:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4078
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   641
!
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   642
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   643
checkSubProjects
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   644
    "Checks whether all subprojects listed in #subprojects are present."
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   645
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   646
    |isValidName subProjectsListed invalidNames validNames subProjectsNotPresent|
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   647
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   648
    isValidName := 
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   649
        [:prj |
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   650
            (prj first isLetter
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   651
            and:[ ((prj occurrencesOf:$:) <= 1)
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   652
            and:[ ((prj copyReplaceAll:$: with:$/) 
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   653
                        conform:[:ch | ch isLetterOrDigit or:['/-_.' includes:ch]]) ]])
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   654
        ].
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   655
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   656
    subProjectsListed := currentPackageDef subProjects.
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   657
    invalidNames := subProjectsListed select:[:prj | (isValidName value:prj) not].
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   658
    validNames := subProjectsListed select:isValidName.
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   659
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   660
    subProjectsNotPresent := validNames select:[:prj | prj asPackageId projectDefinitionClass isNil].
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   661
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   662
    invalidNames do:[:eachBadName |                                
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   663
        self addProblem: (ProjectProblem newInvalidPackageName badName:eachBadName).
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   664
    ].
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   665
    subProjectsNotPresent do:[:eachMissing |                                
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   666
        self addProblem: (ProjectProblem newProjectDefinitionDoesNotExist missing: eachMissing).
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   667
    ].
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   668
! !
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   669
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   670
!ProjectChecker methodsFor:'checks-private'!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   671
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   672
checkClasses
3535
f02b2535dd15 Fix for multi-package check.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3508
diff changeset
   673
    | classesToCheck |
f02b2535dd15 Fix for multi-package check.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3508
diff changeset
   674
f02b2535dd15 Fix for multi-package check.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3508
diff changeset
   675
    classesToCheck := classes notNil ifTrue:[ classes ] ifFalse:[ Smalltalk allClasses ].
3618
851e57ea8ad1 Fix for non-Smalltalk classes: do not check classes nor methods which are not Smalltalk ones.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3607
diff changeset
   676
    classesToCheck := classesToCheck select:[:each | each programmingLanguage isSmalltalk and:[ each package = currentPackage ] ].
3589
ec7033799261 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   677
ec7033799261 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   678
    (currentPackageDef notNil and:[currentPackageDef isFolderForProjectsDefinition]) ifTrue:[
ec7033799261 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   679
        classesToCheck remove:currentPackageDef ifAbsent:[]
ec7033799261 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   680
    ].
ec7033799261 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   681
4455
af2a675e0f32 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 4372
diff changeset
   682
    skipCheckClasses ifFalse:[
af2a675e0f32 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 4372
diff changeset
   683
        self checkClasses: classesToCheck.
af2a675e0f32 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 4372
diff changeset
   684
    ].
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   685
3589
ec7033799261 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   686
    (currentPackageDef notNil and:[currentPackageDef isFolderForProjectsDefinition]) ifTrue:[
ec7033799261 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   687
        classesToCheck do:[:eachClass |
ec7033799261 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   688
            self addProblem: 
ec7033799261 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   689
                (ProjectProblem newClassShouldNotBeInPackage className: eachClass name).
ec7033799261 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   690
        ].
ec7033799261 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   691
    ].
ec7033799261 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   692
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   693
    "Created: / 11-01-2012 / 16:55:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3618
851e57ea8ad1 Fix for non-Smalltalk classes: do not check classes nor methods which are not Smalltalk ones.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3607
diff changeset
   694
    "Modified: / 31-07-2014 / 09:47:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   695
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   696
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   697
checkClasses: classesToCheck
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   698
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   699
    self checkClassesListedInProjectDefinition: classesToCheck.
2910
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   700
    self checkClassesForMethodsInNoProject:classesToCheck.
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   701
    self checkClassesForNonQualifiedSharedPools:classesToCheck.
3467
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   702
    self checkClassesAutoloadedSuperclasse:classesToCheck.
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   703
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   704
    "Created: / 13-02-2012 / 18:18:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3467
253e31a8aabd merged in jv's changes
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   705
    "Modified: / 20-09-2013 / 11:08:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   706
!
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   707
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   708
checkMethod: method
3618
851e57ea8ad1 Fix for non-Smalltalk classes: do not check classes nor methods which are not Smalltalk ones.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3607
diff changeset
   709
    method programmingLanguage isSmalltalk ifTrue:[
851e57ea8ad1 Fix for non-Smalltalk classes: do not check classes nor methods which are not Smalltalk ones.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3607
diff changeset
   710
        (self checkMethodSourceCode: method) ifTrue:[
851e57ea8ad1 Fix for non-Smalltalk classes: do not check classes nor methods which are not Smalltalk ones.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3607
diff changeset
   711
            "/OK, method's source code is fine, perform more checks on
851e57ea8ad1 Fix for non-Smalltalk classes: do not check classes nor methods which are not Smalltalk ones.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3607
diff changeset
   712
            "/ it's source code.
3563
1590b29dbdef Added lint-based check for stc bugs to ProjectChecker (#checkMethodSTCCompilability2:)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3548
diff changeset
   713
3618
851e57ea8ad1 Fix for non-Smalltalk classes: do not check classes nor methods which are not Smalltalk ones.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3607
diff changeset
   714
            "/ ActivityNotification raiseRequestWith:self errorString:'Checking stc compilability...'.
851e57ea8ad1 Fix for non-Smalltalk classes: do not check classes nor methods which are not Smalltalk ones.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3607
diff changeset
   715
            self checkMethodSTCCompilability: method.
851e57ea8ad1 Fix for non-Smalltalk classes: do not check classes nor methods which are not Smalltalk ones.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3607
diff changeset
   716
            "/ ActivityNotification raiseRequestWith:self errorString:'Checking coding style...'.
851e57ea8ad1 Fix for non-Smalltalk classes: do not check classes nor methods which are not Smalltalk ones.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3607
diff changeset
   717
            self checkMethodCodingStyle: method.
851e57ea8ad1 Fix for non-Smalltalk classes: do not check classes nor methods which are not Smalltalk ones.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3607
diff changeset
   718
        ]
851e57ea8ad1 Fix for non-Smalltalk classes: do not check classes nor methods which are not Smalltalk ones.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3607
diff changeset
   719
    ].
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   720
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   721
    "Created: / 11-04-2012 / 12:27:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3618
851e57ea8ad1 Fix for non-Smalltalk classes: do not check classes nor methods which are not Smalltalk ones.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3607
diff changeset
   722
    "Modified: / 31-07-2014 / 09:48:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   723
!
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   724
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   725
checkMethods
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   726
    methods notEmptyOrNil ifTrue:[
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   727
        self checkMethods: methods.
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   728
        ^self.
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   729
    ].
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   730
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   731
    self checkMethods:
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   732
        (Iterator on:[:whatToDo|
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   733
            | classesToCheck |
3233
b80cfaa73cb4 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3167
diff changeset
   734
b80cfaa73cb4 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3167
diff changeset
   735
            classes notNil ifTrue:[
b80cfaa73cb4 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3167
diff changeset
   736
                classesToCheck := classes
b80cfaa73cb4 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3167
diff changeset
   737
            ] ifFalse:[
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   738
                classesToCheck := (Smalltalk allClasses select:[:cls | (cls package = currentPackage)]).
3233
b80cfaa73cb4 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3167
diff changeset
   739
            ].
b80cfaa73cb4 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3167
diff changeset
   740
            classesToCheck do:[:cls|
b80cfaa73cb4 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3167
diff changeset
   741
                cls theNonMetaclass withAllPrivateClassesDo:[:eachClass |
b80cfaa73cb4 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3167
diff changeset
   742
                    ActivityNotification raiseRequestWith:self errorString:('Checking %1...' bindWith:eachClass name).
b80cfaa73cb4 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3167
diff changeset
   743
                    eachClass instAndClassSelectorsAndMethodsDo:[:s :m | 
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   744
                        m package = currentPackage ifTrue:[
3148
2a6c8e1b5f69 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3116
diff changeset
   745
                            ((checkExtensionsOnly ? false) not
2a6c8e1b5f69 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3116
diff changeset
   746
                            or:[ m package ~~ cls package "isExtension" ]) ifTrue:[
2a6c8e1b5f69 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3116
diff changeset
   747
                                whatToDo value:m
2a6c8e1b5f69 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3116
diff changeset
   748
                            ]
2a6c8e1b5f69 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3116
diff changeset
   749
                        ]
2a6c8e1b5f69 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3116
diff changeset
   750
                    ]
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   751
                ].
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   752
            ]
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   753
        ])
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   754
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   755
    "Created: / 11-01-2012 / 16:55:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   756
    "Modified: / 22-02-2014 / 21:48:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   757
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   758
2853
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   759
checkMethods: methodsToCheck
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   760
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   761
    methodsToCheck do:[:m|self checkMethod: m].
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   762
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   763
    "Created: / 11-04-2012 / 12:16:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   764
!
b28d27ac2c67 Initial version of project checker
vrany
parents: 2797
diff changeset
   765
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   766
checkPackage
4078
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   767
    currentPackageDef isNil ifTrue:[^ self].
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   768
    currentPackageDef isFolderForProjectsDefinition ifFalse:[
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   769
        (checkExtensionsOnly ? false) ifFalse:[
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   770
            self checkClassListConsistency.
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   771
        ].
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   772
        self checkExtensionsListConsistency.
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   773
        self checkExtensionsPrerequisites.
3148
2a6c8e1b5f69 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3116
diff changeset
   774
    ].
4078
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   775
    self checkSubProjects.
2718
vrany
parents: 2716
diff changeset
   776
2716
9a74597bcd4b Do not use annotations as stc crashes when compiling them
vrany
parents: 2707
diff changeset
   777
    "add more here..."
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   778
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   779
    "Created: / 11-01-2012 / 16:55:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   780
! !
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   781
2910
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   782
!ProjectChecker methodsFor:'initialization'!
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   783
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   784
initialize
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   785
    "Invoked when a new instance is created."
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   786
4455
af2a675e0f32 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 4372
diff changeset
   787
    skipCheckClasses := checkExtensionsOnly := false.
af2a675e0f32 #FEATURE by exept
Claus Gittinger <cg@exept.de>
parents: 4372
diff changeset
   788
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   789
    packages := OrderedCollection new.
2910
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   790
    problems := List new.
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   791
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   792
    "/ super initialize.   -- commented since inherited method does nothing
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   793
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   794
    "Modified: / 22-02-2014 / 21:41:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2910
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   795
! !
b603824e85d5 - new checks to ensure class list consistency
vrany
parents: 2856
diff changeset
   796
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   797
!ProjectChecker methodsFor:'reporting'!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   798
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   799
addProblem: aProjectProblem
3807
9746e6873402 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3805
diff changeset
   800
Transcript showCR:aProjectProblem.
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   801
    aProjectProblem package: currentPackage.
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   802
    problems isNil ifTrue:[problems := OrderedCollection new].
3548
265e326c3bd0 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3535
diff changeset
   803
    problems add: aProjectProblem.
265e326c3bd0 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3535
diff changeset
   804
    aProjectProblem allProblems:problems.
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   805
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   806
    "Created: / 23-02-2012 / 13:10:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3508
dd0e9fe9c7e2 Added support for checking multiple packages at once.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3467
diff changeset
   807
    "Modified: / 22-02-2014 / 21:45:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2718
vrany
parents: 2716
diff changeset
   808
! !
vrany
parents: 2716
diff changeset
   809
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   810
!ProjectChecker class methodsFor:'documentation'!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   811
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   812
version
4078
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   813
    ^ '$Header$'
3167
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   814
!
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   815
56a8d17b6987 class: ProjectChecker
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
   816
version_CVS
4078
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   817
    ^ '$Header$'
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   818
!
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   819
2797
ab7cc3e21a2b Updated from SVN
vrany
parents: 2718
diff changeset
   820
version_SVN
4078
49d23af00621 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 3807
diff changeset
   821
    ^ '$Id$'
2707
68860a7700c2 initial checkin
vrany
parents:
diff changeset
   822
! !
3116
9ddba2316fec class: ProjectChecker
Stefan Vogel <sv@exept.de>
parents: 2976
diff changeset
   823