我想使用pylint来检查我的代码,但我只对错误和警告级别感兴趣.有没有办法在命令行或pylintrc中执行此操作?
我对过滤给定的问题不感兴趣(比如在MESSAGE CONTROL中列出所有消息),我只想让pylint忽略所有约定和重构消息.
注意:我不认为这是使用Pylint显示错误和警告的重复
我试图通过去除我不关心的噪音和计算来描述(使用Callgrind)我的代码的特定部分.这是我想要做的一个例子:
for (int i=0; i<maxSample; ++i) {
//Prepare data to be processed...
//Method to be profiled with these data
//Post operation on the data
}
Run Code Online (Sandbox Code Playgroud)
我的用例是一个回归测试,我想确保所讨论的方法仍然足够快(类似于自上次实现以来少于10%的额外指令).这就是为什么我想从Callgrind获得更清晰的输出.(我需要一个for循环才能处理大量数据,以便对我想要分析的方法的行为有一个很好的估计)
我的第一次尝试是将代码更改为:
for (int i=0; i<maxSample; ++i) {
//Prepare data to be processed...
CALLGRIND_START_INSTRUMENTATION;
//Method to be profiled with these data
CALLGRIND_STOP_INSTRUMENTATION;
//Post operation on the data
}
CALLGRIND_DUMP_STATS;
Run Code Online (Sandbox Code Playgroud)
添加Callgrind宏来控制检测.我还添加了--instr-atstart = no选项,以确保我只分析我想要的部分代码...
不幸的是,当我开始使用callgrind启动我的可执行文件时,这种配置永远不会结束......这不是一个缓慢的问题,因为完整的仪器运行持续不到一分钟.
我也试过了
for (int i=0; i<maxSample; ++i) {
//Prepare data to be processed...
CALLGRIND_TOGGLE_COLLECT;
//Method to be profiled with these data
CALLGRIND_TOGGLE_COLLECT;
//Post …Run Code Online (Sandbox Code Playgroud) 我希望能够共享一个自包含的virtualenv,即确保安装的所有脚本都能够直接运行而无需设置任何内容.例如,我在使用MySQL-python的virtualenv中安装了一个脚本.不幸的是,导入MySQLdb会查找一个共享库(libmysqlclient.so),该库被移动到我系统上的标准目录以外的地方.有没有办法保证我的virtualenv每次有人使用它时都会找到它?
我试图用 PLY 解析 python 语言的函数定义。我遇到了与缩进相关的问题。例如对于 for 语句,我希望能够知道块何时结束。我在这里阅读了 python 语法:http : //docs.python.org/2/reference/grammar.html 而这部分的语法是:
for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite]
suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT
Run Code Online (Sandbox Code Playgroud)
我不知道如何用 PLY 描述 INDENT 和 DEDENT 令牌。我正在尝试类似的东西:
def t_indentation(t):
r' |\t'
#some special treatment for the indentation.
Run Code Online (Sandbox Code Playgroud)
但似乎 PLY 认为带有空格的正则表达式匹配空字符串并且不构建词法分析器......即使我已经设法拥有 INDENT 令牌,我也不确定如何获得 DEDENT 令牌......
有没有办法用 PLY 做到这一点?
我在使用 cmake 的 cygwin 上有一个奇怪的行为。我尝试检查 CMakeLists.txt 中的操作系统,但似乎这种特殊情况不起作用...这是一个引发我的问题的示例:
set (FOO "BAR")
message(${CMAKE_SYSTEM_NAME})
if (${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN")
message("EQUALS CYGWIN")
endif()
if (${CMAKE_SYSTEM_NAME} MATCHES "CYGWIN")
message("MATCHES CYGWIN")
endif()
if (${FOO} MATCHES "BAR")
message("MATCHES BAR")
endif()
Run Code Online (Sandbox Code Playgroud)
CMake 打印:
CYGWIN
EQUALS CYGWIN
MATCHES BAR
Run Code Online (Sandbox Code Playgroud)
而不是预期的“MATCHES CYGWIN”。我觉得很奇怪,它适用于其他变量(比如这里的 FOO)。我做错了什么吗?
配置:
PS:我还检查了 FOO =“CYGWIN”,两者都不匹配。似乎这个特定的字符串不适用于 MATCHES...