Add JS script syntax verification to the OXP verifier

Finally got tired enough of restarting Oolite repeatedly to track down
typos...

(Note: adds new file src/Core/OXPVerifier/OOCheckJSSyntaxVerifierStage.m
which will also need adding to the XCode project for Mac building)
This commit is contained in:
cim 2015-01-27 21:29:28 +00:00
parent 211d9ba42a
commit f454c00263
4 changed files with 127 additions and 1 deletions

View File

@ -262,6 +262,7 @@ OOLITE_OXP_VERIFIER_FILES = \
OOAIStateMachineVerifierStage.m \
OOCheckDemoShipsPListVerifierStage.m \
OOCheckEquipmentPListVerifierStage.m \
OOCheckJSSyntaxVerifierStage.m \
OOCheckPListSyntaxVerifierStage.m \
OOCheckRequiresPListVerifierStage.m \
OOCheckShipDataPListVerifierStage.m \

View File

@ -12,7 +12,8 @@
OOCheckEquipmentPListVerifierStage,
OOTextureVerifierStage,
OOCheckShipDataPListVerifierStage,
OOAIStateMachineVerifierStage
OOAIStateMachineVerifierStage,
OOCheckJSSyntaxVerifierStage
);
excludeStages =
(
@ -42,6 +43,7 @@
"Images",
"Models",
"Music",
"Scenarios",
"Schemata",
"Scripts",
"Shaders",

View File

@ -0,0 +1,35 @@
/*
OOCheckJSSyntaxVerifierStage.h
OOOXPVerifierStage which checks that JS scripts compile
Oolite
Copyright (C) 2004-2013 Giles C Williams and contributors
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA.
*/
#import "OOFileScannerVerifierStage.h"
#if OO_OXP_VERIFIER_ENABLED
@interface OOCheckJSSyntaxVerifierStage: OOFileHandlingVerifierStage
@end
#endif

View File

@ -0,0 +1,88 @@
/*
OOCheckJSSyntaxVerifierStage.m
Oolite
Copyright (C) 2004-2013 Giles C Williams and contributors
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA.
*/
#import "OOCheckJSSyntaxVerifierStage.h"
#if OO_OXP_VERIFIER_ENABLED
#import "OOFileScannerVerifierStage.h"
#import "OOStringParsing.h"
#import "OOScript.h"
#import "OOJSScript.h"
#import "OOJavaScriptEngine.h"
static NSString * const kStageName = @"Checking JS Script file syntax";
@implementation OOCheckJSSyntaxVerifierStage
- (NSString *)name
{
return kStageName;
}
- (BOOL)shouldRun
{
OOFileScannerVerifierStage *fileScanner = nil;
fileScanner = [[self verifier] fileScannerStage];
return ([[fileScanner filesInFolder:@"Scripts"] count] > 0);
}
- (void)run
{
OOFileScannerVerifierStage *fileScanner = nil;
NSArray *scriptFiles = nil;
NSString *scriptFile = nil;
NSString *fileExt = nil;
NSString *filePath = nil;
fileScanner = [[self verifier] fileScannerStage];
scriptFiles = [fileScanner filesInFolder:@"Scripts"];
if (scriptFiles == nil) return;
[[OOJavaScriptEngine sharedEngine] setShowErrorLocations:YES];
foreach (scriptFile, scriptFiles)
{
fileExt = [[scriptFile pathExtension] lowercaseString];
if ([fileExt isEqualToString:@"js"] || [fileExt isEqualToString:@"es"])
{
filePath = [fileScanner pathForFile:scriptFile inFolder:@"Scripts" referencedFrom:nil checkBuiltIn:NO];
OOScript *script = [OOJSScript scriptWithPath:filePath properties:nil];
(void)script;
}
}
}
@end
#endif