Legacy repository for archiving past feature requests and bug reports.
For reporting new bugs/feature requests, please use the ticket system on the website. When you are logged in, there is a button in the bottom right to start a conversation.
Legacy repository - archives past feature requests/bug reports
Home Page: https://scrutinizer-ci.com/docs
Legacy repository for archiving past feature requests and bug reports.
For reporting new bugs/feature requests, please use the ticket system on the website. When you are logged in, there is a button in the bottom right to start a conversation.
When this inspection errored today, it kept the Travis build status as pending instead of updating it to passed at the end of the travis build
When a PR is updated through a force push (when amending a commit or rebasing), an inspection should be triggered for the updated code. Currently, it is not.
Running PHP LOC and PDepend in the same build gives some crazy metrics.
See this build and compare the number of classes or of interfaces reported by both tools. It looks like PDepend does not parse the whole project. Does PDepend has a different definition for "Number of classes" or is there a mistake in the implementation when reading the PDepend output ?
It would be great to be able to do this in the yaml instead of via the web interface.
The current code coverage implementation requires running the testsuite on Scrutinizer. this has several drawbacks:
It would be great to be able to collect the code coverage while running tests on CI services (as done by coveralls.io btw)
Please add subj.
Can someone help?
With that two options the configuration as a whole lacks a bit consistency. Would be cool, to only have one pattern that applies to all tools. And also that makes it difficult to provide a global filter option for the whole config, which can be very handsome.
On this inspection for instance, I only see 16 messages while the tab tells me there is 28. And I see a few files without message in it.
I can reach the total of 28 if I count 1 extra message per JS file appearing in the output, as if JSHint was adding an error on each of them which would get lost.
I've just tested the service the first time and I get the following error when using scrutinizer ci with my repository FlorianWolters/PHP-Component-Core-Cloneable.
PHP Fatal error: Call to undefined method Scrutinizer\PhpAnalyzer\Model\TraitC::getTraversableElementType() in /home/scrutinizer-worker/app/releases/20130323134330/vendor/scrutinizer/php-analyzer/src/Scrutinizer/PhpAnalyzer/DataFlow/TypeInference/TypeInference.php on line 240
There is also the following output in the log:
Caution: {percentage}% of used types were not defined, e.g. {example}. This suggests that you are trying to analyze only a partial project, or excluded dependencies; doing so can cause the various data flow analyses (like type inference) to either be inaccurate or not converge to a fixed-point solution (i.e. be very slow).
Im using a .scrutinizer.yml
configuration file in the repository with no inheritance.
Here is the complete log: https://scrutinizer-ci.com/g/FlorianWolters/PHP-Component-Core-Cloneable/inspections/60623db6-aaf2-4601-9a60-b7d64f632d9e#log
Some tests require a database, especially functional tests, and it would be nice to have this available.
When defining a global exclude_path array via the filter
option :
filter:
excluded_paths: ["vendor/*", "tests/*", "examples/*"]
Those folders don't seem to be taken into account and get analyzed by the different tools.
Could you please add an option to specify which config file scrutinizer.phar uses at run time. It would be handy to have multiple config files.
https://scrutinizer-ci.com/docs/ does not document pdepend while it is in the code (and is used in the code snippet of the blog post introducing metrics)
please add
projects like doctrine2 are starting to choose coverall.io,
just because of the badge and the coverage report.
now that metrics are there, this shouldn't be to hard to implement.
it's also good for marketing of scrutinizer
Downloaded from here - https://scrutinizer-ci.com/scrutinizer.phar and can't run it on PHP 5.3.14 on Mac:
[09-Mar-2013 11:45:10 UTC] PHP Parse error: syntax error, unexpected T_OBJECT_OPERATOR in phar:///Users/Bob/Sites/nextlove/scrutinizer.phar/src/Scrutinizer/Cli/Command/RunCommand.php on line 53
Bug ?
The config is displayed in JSON, but arrays (for instance excluded dirs) are displayed as an object instead of an array. This is not a big issue but it would be more readable without the indices displayed as object keys
PR builds are failing today when cloning the repository. See https://scrutinizer-ci.com/g/Incenteev/Incenteev/inspections/4f6599fa-9549-4f91-9c30-1abdc735116e for an example of a failed build
I'm getting a weird warning from PHP Analyzer with what looks like a placeholder that wasn't replaced :
Caution: {percentage}% of used types were not defined, e.g. {example}. This suggests that you are trying to analyze only a partial project, or excluded dependencies; doing so can cause the various data flow analyses (like type inference) to either be inaccurate or not converge to a fixed-point solution (i.e. be very slow).
Is this normal or does it come from something I misconfigured ?
Seeing the message I tried redoing an inspection without excluding the vendor
folder but got the same message.
Build : https://scrutinizer-ci.com/g/Anahkiasen/rocketeer/inspections/013d547a-180a-48f8-a4d8-823308e906d4
It would be good to get the progress of the underlying tools in debug more instead of just waiting with a message telling Running "php_pdepend"
. This could be enabled only in debug mode to avoid having a big output in normal mode.
this would be consistent with the support of progress output for custom commands.
missing included files in repository:
.. include :: php_cpd_configuration.rst
.. include :: php_cpd_configuration_reference.rst
Only index.rst exists?!
Currently you can do this on a per-tool basis (ie, per-path configuration) but it would be great to be able to specify a list of relevant paths that applies to all tools in the configuration.
I've enabled PHPLOC in my global configuration with php_loc: true
and in my repository config I have inherit: true
so that it uses the global config. Everything else works fine but the Metrics tab remains empty although I see PHPLOC running in the log, is that where I'm supposed to see the metrics ?
Defining the following section in the .scrutinizer.yml
configuration file does not work:
php_mess_detector:
extensions:
- php
command: phpmd
enabled: true
config:
rulesets:
- codesize
- controversial
- design
- naming
Running an inspection with that section causes the following error:
> [Symfony\Component\Process\Exception\ProcessFailedException]
> The command "phpmd '/tmp/phpmd_inputo7V5DW' xml 'codesize,controversial,design,naming'" failed.
I tested the phpmd
command on my local machine and I think it is related to the '
character. Simply ommit it and it should work, e.g.:
phpmd /tmp/phpmd_inputo7V5DW xml codesize,controversial,design,naming
My current workaround is to comment the config
section for PHPMD in the configuration file:
php_mess_detector:
extensions:
- php
command: phpmd
enabled: true
# config:
# rulesets:
# - codesize
# - controversial
# - design
# - naming
a status Scrutinizer: Running Analyses โ Travis: Pending
should mark the PR status as pending, not as good to merge.
please add support for the hhvm static analyzer.
hhvm is already faster than native PHP, so compatibility checks for this application server are quite important.
When the lock file is committed in the repo, it is possible to determine the exact version of the vendors without doing the composer installation. This would make the build faster when the dependencies are already cached (which is likely to happen as they will not change on each commit)
It's currently a little cumbersome when logged in to have to go to Profile > Repositories and then check each one individually to see where I left off. It would be nice if when logged in the default homepage was replaced by a dashboard showing the currently tracked repositories and their last inspection (number of comments, fixes, and travis build).
I added @krispypen to my repositories. But he does not see them in his account.
I added him before he was registered on scrutiniser, maybe this is the issue?
JSHint 1.1 was buggy for the unused:true
option, reporting arguments as unused even when they are followed by a used argument (thus being the same than unused: strict
).
this is rather annoying as it reports lots of false positives for our callbacks passed to thrid-party libraries in which we may not care about the first argument but only the second (for instance jQuery.each(function(index, value) {})
).
this issue should be fixed in JSHint 2.0. Could you update the version used by scrutinizer ?
It might be useful to be able to restart a review when it failed because of a Github downtime like this one
The scrutinizer badge currently looks quite bad (in my opinion) as it has too many details for its current size. Aligning it to the one of travis-ci or coveralls may be nice:
shields.io could eventually provide support for this
Running bin/scrutinizer run
locally worked flawlessly.
{
"tools": {
"php_mess_detector": {
"enabled": true,
"extensions": {
"0": "php"
},
"command": "phpmd",
"filter": {
"paths": {
},
"excluded_paths": {
}
},
"config": {
"rulesets": {
"0": "codesize"
}
},
"path_configs": {
}
},
"php_cs_fixer": {
"enabled": true,
"extensions": {
"0": "php"
},
"command": "php-cs-fixer",
"filter": {
"paths": {
},
"excluded_paths": {
}
},
"config": {
"level": "psr1",
"fixers": {
}
},
"path_configs": {
}
},
"php_analyzer": {
"enabled": true,
"filter": {
"excluded_paths": {
},
"paths": {
}
},
"extensions": {
"0": "php"
},
"path_configs": {
}
},
"php_code_sniffer": {
"enabled": true,
"config": {
"standard": "PSR1",
"sniffs": {
},
"config": {
}
},
"extensions": {
"0": "php"
},
"command": "phpcs",
"filter": {
"paths": {
},
"excluded_paths": {
}
},
"path_configs": {
}
},
"sensiolabs_security_checker": {
"enabled": true,
"filter": {
"paths": {
},
"excluded_paths": {
}
}
}
},
"filter": {
"paths": {
},
"excluded_paths": {
}
},
"before_commands": {
},
"after_commands": {
},
"artifacts": {
}
}
Scheduling package installation
Installing Package
> $ git clone 'https://github.com/frosas/php-misc.git' '/home/scrutinizer/package'
> Cloning into '/home/scrutinizer/package'...
> $ cd /home/scrutinizer/package
> $ git checkout -qf a32e360ef40da593dd4598046f1a6357827117dc
Package was installed; it contained no config files.
Installation succeeded; scheduling parsing of configuration data
Parsing repository configuration
Configuration does not inherit, finalizing
Scheduling PHP Analyzer Run
Scheduling Scrutinizer Run
Dependencies are not yet available, scheduling analysis
Installing PHP dependencies through composer
> $ scrutinizer run --format="json" --output-file="/home/scrutinizer/build/result" --verbose /home/scrutinizer/build/package
> Analyzing file "src/Frosas/Json.php".
> Analyzing file "src/Frosas/Reflection.php".
> Analyzing file "src/Frosas/String.php".
> Analyzing file "src/Frosas/Set.php".
> Analyzing file "src/Frosas/NotFoundException.php".
> Analyzing file "src/Frosas/Collection.php".
> Analyzing file "src/Frosas/Collection/Wrapper.php".
> Analyzing file "src/Frosas/Html.php".
> Analyzing file "src/Frosas/Map.php".
> Analyzing file "src/Frosas/Error.php".
> Analyzing file "src/Frosas/Backtrace.php".
> Analyzing file "src/Frosas/Util.php".
> Analyzing file "bin/collection-performance.php".
> Analyzing file "tests/Frosas/CollectionTest.php".
> Analyzing file "tests/Frosas/UtilTest.php".
> Analyzing file "tests/Frosas/MapTest.php".
> Analyzing file "tests/Frosas/HtmlTest.php".
> Analyzing file "tests/Frosas/Collection/WrapperTest.php".
> Analyzing file "tests/Frosas/JsonTest.php".
> Analyzing file "tests/Frosas/ReflectionTest.php".
> Analyzing file "tests/Frosas/StringTest.php".
> Analyzing file "tests/Frosas/SetTest.php".
> Analyzing file "tests/Frosas/ErrorTest.php".
> Analyzing file "src/Frosas/Json.php".
> Analyzing file "src/Frosas/Reflection.php".
> Analyzing file "src/Frosas/String.php".
> Analyzing file "src/Frosas/String.php".
> Analyzing file "src/Frosas/Set.php".
> Analyzing file "src/Frosas/NotFoundException.php".
> Analyzing file "src/Frosas/Collection.php".
> Analyzing file "src/Frosas/Collection/Wrapper.php".
> Analyzing file "src/Frosas/Html.php".
> Analyzing file "src/Frosas/Map.php".
> Analyzing file "src/Frosas/Error.php".
> Analyzing file "src/Frosas/Backtrace.php".
> Analyzing file "src/Frosas/Util.php".
> Analyzing file "bin/collection-performance.php".
> Analyzing file "tests/Frosas/CollectionTest.php".
> Analyzing file "tests/Frosas/UtilTest.php".
> Analyzing file "tests/Frosas/MapTest.php".
> Analyzing file "tests/Frosas/HtmlTest.php".
> Analyzing file "tests/Frosas/Collection/WrapperTest.php".
> Analyzing file "tests/Frosas/JsonTest.php".
> Analyzing file "tests/Frosas/ReflectionTest.php".
> Analyzing file "tests/Frosas/StringTest.php".
> Analyzing file "tests/Frosas/SetTest.php".
> Analyzing file "tests/Frosas/ErrorTest.php".
> Analyzing file "src/Frosas/Json.php".
> Analyzing file "src/Frosas/Reflection.php".
> Analyzing file "src/Frosas/String.php".
> Analyzing file "src/Frosas/Set.php".
> Analyzing file "src/Frosas/NotFoundException.php".
> Analyzing file "src/Frosas/Collection.php".
> Analyzing file "src/Frosas/Collection/Wrapper.php".
> Analyzing file "src/Frosas/Html.php".
> Analyzing file "src/Frosas/Map.php".
> Analyzing file "src/Frosas/Error.php".
> Analyzing file "src/Frosas/Backtrace.php".
> Analyzing file "src/Frosas/Util.php".
> Analyzing file "bin/collection-performance.php".
> Analyzing file "tests/Frosas/CollectionTest.php".
> Analyzing file "tests/Frosas/UtilTest.php".
> Analyzing file "tests/Frosas/MapTest.php".
> Analyzing file "tests/Frosas/HtmlTest.php".
> Analyzing file "tests/Frosas/Collection/WrapperTest.php".
> Analyzing file "tests/Frosas/JsonTest.php".
> Analyzing file "tests/Frosas/ReflectionTest.php".
> Analyzing file "tests/Frosas/StringTest.php".
> Analyzing file "tests/Frosas/SetTest.php".
> Analyzing file "tests/Frosas/ErrorTest.php".
> $ composer config -g notify-on-install false
> $ composer install --dev --no-progress --no-scripts --no-custom-installers
Scrutinizer has finished; scheduling results for post-processing.
> Loading composer repositories with package information
> Installing dependencies
> - Installing phpoption/phpoption (1.1.0)
>
> Loading composer repositories with package information
> Installing dev dependencies
> - Installing symfony/yaml (v2.1.7)
> Downloading
>
> - Installing phpunit/php-text-template (1.1.4)
> Downloading
>
> - Installing phpunit/phpunit-mock-objects (1.2.3)
> Downloading
>
> - Installing phpunit/php-timer (1.0.4)
> Downloading
>
> - Installing phpunit/php-token-stream (1.1.5)
> Downloading
>
> - Installing phpunit/php-file-iterator (1.3.3)
> Downloading
>
> - Installing phpunit/php-code-coverage (1.2.8)
> Downloading
>
> - Installing phpunit/phpunit (3.7.14)
> Downloading
>
> phpunit/phpunit suggests installing phpunit/php-invoker (>=1.1.0,<1.2.0)
> Writing lock file
> Generating autoload files
Dependencies were installed, calculating dependency builder order
Scheduling analysis for phpunit/phpunit
Moving phpunit/phpunit to persistent storage
Scheduling analysis for frosas/php-misc
Moving frosas/misc to persistent storage
Dependency analysis completed, waiting for their builds to finish.
https://github.com/alchemy-fr/Phraseanet always fails on scutinizer.
See this debug output : https://scrutinizer-ci.com/g/alchemy-fr/Phraseanet/inspections/b7016068-c44d-4f66-8ad5-2f6825ce10ff
https://scrutinizer-ci.com/g/GrahamCampbell/Bootstrap-CMS/inspections/54ccfa6b-31b5-4d63-90b0-81b625a4d3cd/log was queued by me manually, and has 11 issues. https://scrutinizer-ci.com/g/GrahamCampbell/Bootstrap-CMS/inspections/8941e754-8207-434f-8dcb-b28f122ff249/log was queued automatically, yet only has 2 issues. How can this be?
Is there a change for MongoDB support ?
At this point composer fails to install f.e. "doctrine/mongodb-odm" because mongo PHP extension is missing.
Is there a way to configure it that I haven't noticed ?
(Sorry, didn't really know which repo was meant to be the website)
It would be nice if Scrutinizer also ran PHP Copy/Paste Detector on available files โ it detects recurring patterns in the code that could be abstracted, ala Code Climate.
Hi,
Is it already possible to receive build's results by email?
In UI, I see the "Unsubscribe" button: what does it mean?
Thanks for responses and for this great tool !
"schedule inspection" action should select the default branch and not the first one
We've got a project that runs two different code sniffer standards over the entire codebase, currently in a rather hacky way through Travis.
From what I can tell, scrutinizer only allows for one configuration of each individual tool. It would be nice if we could move both our code sniffs to scrutinizer (they can't be merged), which would require allowing more than one configuration for each tool.
Similarily to what ohloh does. It relates the number of comments to the number of code. The higher the percentage of comments, the better well commented a project is. Must be easy to calculate this statistic as phploc provides all the data.
I would expect the PHP CS Fixer tool to actually be able to update code that is incorrect, it does not do this at the moment.
Creating a new repo on https://scrutinizer-ci.com/g/new
generates a default config.
phpcpd default options should be also in this default config.
I have the following build configuration and on save I get the following error (Unable to parse at line 9 (near " filter:").
):
tools:
php_cs_fixer: true
php_code_sniffer:
config:
standard: PSR1
filter:
excluded_paths: ["tests/*"]
php_mess_detector: true
filter:
excluded_paths: ["tests/*"]
php_analyzer:
filter:
excluded_paths: ["tests/*"]
sensiolabs_security_checker: true
This functionality is documented at https://scrutinizer-ci.com/docs/tools/php/mess-detector/
XML files are being parsed like php files with the default configuration settings
This is the config reported in the build (partial as I have other tools):
{
"php_cpd": {
"enabled": true,
"filter": {
"paths": {
"0": "src\/Incenteev"
},
"excluded_paths": {
"0": "src\/Incenteev\/*\/Tests\/*"
}
},
"command": "phpcpd",
"min_lines": 5,
"min_tokens": 70,
"excluded_dirs": {
},
"names": {
"0": "*.php"
}
}
}
but PHP CPD reports issues in web/app_test.php
(not matching the src/Incenteev
path) and it src/Incenteev/WebBundle/Tests/...
(which should be excluded)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.