我使用自动加载动态加载PHP类文件.这些文件可能由于某种原因而丢失或损坏.
Autoload将成功报告丢失的文件,以便应用程序逻辑可以处理.但是如果这些文件已损坏,则整个处理将暂停,并为用户显示空白屏幕,并在错误日志中显示"PHP Parse error:syntax error".
是否可以从PHP代码检查PHP文件的语法?
我看过这里:http://us.php.net/manual/en/function.php-check-syntax.php - 它已被弃用.
和
exec("php -l $file");
Run Code Online (Sandbox Code Playgroud)
似乎是一种错误的方式(http://bugs.php.net/bug.php?id=46339)
思考?
我刚开始在Django上开发,然后我想在它上面使用Syntastic语法检查器是个好主意.
问题在于它抱怨某些事情是错误的,事实上,事实并非如此.
例子:
对于
from django.core.urlresolvers import reverse
Run Code Online (Sandbox Code Playgroud)
我明白了:
error| [F0401] Unable to import 'django.core.urlresolvers'
Run Code Online (Sandbox Code Playgroud)对于
amount = self.sale_set.filter(date__year=year).aggregate(sum=Sum('amount'))["sum"]
Run Code Online (Sandbox Code Playgroud)
我得到了(哪里self是Album)
error| [E1101, Album.get_sales_total] Instance of 'Album' has no 'sale_set' member
Run Code Online (Sandbox Code Playgroud)即使出现这些"错误",此代码仍可完美运行,但如何使Syntastic正确运行?
我希望能够将所有括号配对成一个字符串,如果它们没有配对,那么它们会得到它们的索引号和False.似乎它一遍又一遍地重复一些值,即cl == pop [1].我试图看看问题出在哪里,但无论我怎么努力,我都看不到它.所以我问是否有人帮助我找到错误,甚至可能改进我的代码;)
def check_parentheses(string):
pending = 0
brackets = []
'''Checks if parens are paired, otherwise they are bad.'''
parenstack = collections.deque()
for ch in string:
if ch in lrmap:
try:
cl = string.index(ch, pending)
pending = cl + 1
except:
cl = False
if ch in lparens:
parenstack.append([ch, cl])
print parenstack
elif ch in rparens:
try:
pop = parenstack.pop()
if lrmap[pop[0]] != ch:
print 'wrong type of parenthesis popped from stack',\
pop[0], ch, pop[1], cl
brackets.append([pop[1], False]) …Run Code Online (Sandbox Code Playgroud) 所以今天我在尝试建立公司解决方案时遇到了一些有趣的问题,我想问你们,你们知道为什么会这样吗?我被告知它可能来自我的机器/视觉工作室,因为其他人没有同样的问题.
所以我们在项目中有一个方法A:
private static string RpcRoutingKeyNamingConvention(Type messageType, ITypeNameSerializer typeNameSerializer)
{
string queueName = typeNameSerializer.Serialize(messageType);
return messageType.GetAttribute<GlobalRPCRequest>() != null || AvailabilityZone == null
? queueName
: queueName + "_" + AvailabilityZone;
}
Run Code Online (Sandbox Code Playgroud)
在哪里GetAttribute<GlobalRPCRequest>()定义public static class ReflectionHelpers
public static TAttribute GetAttribute<TAttribute>(this Type type) where TAttribute : Attribute;
Run Code Online (Sandbox Code Playgroud)
然后我们有项目B有方法:
public static string GetAttribute(this XElement node, string name)
{
var xa = node.Attribute(name);
return xa != null ? xa.Value : "";
}
Run Code Online (Sandbox Code Playgroud)
我必须指出,我们B在项目中引用了项目A.现在发生的是,当我尝试构建时,我得到编译错误: …
我需要的是使用python检查字符串是否是有效的数学表达式.
为简单起见,我想说我只需要数字和嵌套括号的运算+ - * /符(也+ -就是一元).我还为完整性添加了简单的变量名称.
所以我可以这样测试:
test("-3 * (2 + 1)") #valid
test("-3 * ") #NOT valid
test("v1 + v2") #valid
test("v2 - 2v") #NOT valid ("2v" not a valid variable name)
Run Code Online (Sandbox Code Playgroud)
我尝试了pyparsing,但只是尝试了这个例子:"简单的代数表达式解析器,执行+,-,*,/和^算术运算"我得到了无效的代码并且还试图修复它我总是得到错误的语法被解析而不会引发异常
试试:
>>>test('9', 9)
9 qwerty = 9.0 ['9'] => ['9']
>>>test('9 qwerty', 9)
9 qwerty = 9.0 ['9'] => ['9']
Run Code Online (Sandbox Code Playgroud)
两个测试通过... o_O
有什么建议?
有没有人知道在Microsoft .NET框架中检查给定C#文件的语法和语法的方法?
对于一些小背景,我感兴趣的是设置合成来检查.cs文件的语法.开箱即用,syntastic使用Mono C#编译器及其--parse标志来执行此操作,但我在Microsoft .NET框架中找不到相同的东西.
我第一次尝试使用它是用来csc /target:library /nologo代替mcs --parse,但问题是这是基于每个文件调用的.因此,它报告缺少名称空间(存在于完整项目构建中)而不仅仅是语法错误.
我正在Eclipse中使用JavaScript开发RIA应用程序.如何在eclipse中启用JavaScript语法检查?
我有一个生成TypeScript类的代码,作为构建/测试步骤,我想检查生成的文件的语法正确性。
我看过TypeScript编译器选项,但没有看到这样的选项。
我正在寻找可以从Maven运行的工具,因此理想情况下是Maven插件或命令行工具。
我不希望进行完整的编译,因为在该构建步骤中无法达到所引用的类型(它们位于另一个模块中,稍后将生成的源添加到该模块中)。
我是Ruby的新手,最近遇到了一个与创建Ruby on Rails应用程序时的值相比较的问题.在控制器中,我有以下语句总是返回false:
if (user.id != params[:id])
Run Code Online (Sandbox Code Playgroud)
问题是user.id(它是一个Active Record)是一个整数,params [:id]是一个字符串.我花了一段时间来弄清楚这一点,最后我把它改为:
if (user.id != params[:id].to_i)
Run Code Online (Sandbox Code Playgroud)
现在该声明按预期工作.
为了避免将来出现这种错误,有没有办法"编译"或让Ruby在你尝试比较2种不同的类型时发出警告?我遇到的其他一些我想要"编译检查"的问题是:
我目前正在Windows上使用带有Rails 2.3.2和RadRails IDE的Ruby 1.8.6-27 RC2.
简单的部分:
使用下拉列表在Visual Studio 2010项目中定位.NET 2.0框架.
困难的部分:
是否可以定位特定的语法版本 - 例如var s = "hello world"VS2008及更高版本中的有效语法糖,但不能在VS2005中编译.VS2010可以配置为在编译时标记这个吗?
c# syntax-checking backwards-compatibility visual-studio-2010
syntax-checking ×10
c# ×3
compilation ×2
python ×2
syntastic ×2
django ×1
eclipse ×1
ide ×1
javascript ×1
math ×1
parentheses ×1
parsing ×1
php ×1
ruby ×1
syntax ×1
typescript ×1
verification ×1
vim ×1